Очистка данных HTML (я думаю) - PullRequest
1 голос
/ 21 декабря 2011

В настоящее время я работаю с клиентом, который является группой видеоигр для игры World of Warcraft.

Они хотят показать свой текущий рейтинг на своем веб-сайте.

Рейтинги показаны здесь .

Они хотели бы, чтобы номер «Oceanic» и номер «US» отображались на их веб-сайте.

Кто-нибудьв состоянии показать мне способ автоматического обновления этих номеров на сайте в случае их изменения?

Спасибо!

Ответы [ 4 ]

2 голосов
/ 21 декабря 2011

Вы можете использовать этот фрагмент для удаления данных - при условии, что PHP в порядке, так как вы используете WordPress. Я бы сохранил эти значения в базе данных / flatline / cache.

<?php

$data = file_get_contents('http://www.wowprogress.com/guild/us/caelestrasz/Crimson/rating.tier13_25');

$oceanic = explode('<dt>Oceanic: </dt>', $data);
$oceanic = substr($oceanic[1], 4, strpos($oceanic[1], '</dd>') - 4);

$us = explode('<dt>US: </dt>', $data);
$us = substr($us[1], 4, strpos($us[1], '</dd>') - 4);

echo 'Oceanic: ' . $oceanic . "<br />\n";
echo 'US: ' . $us . "<br />\n";
1 голос
/ 21 декабря 2011

Это довольно просто. Я предпочитаю использовать simplehtmldom , но вы также можете использовать встроенные методы парсинга php dom.

require 'simple_html_dom.php';
$html = file_get_html('http://www.wowprogress.com/guild/us/caelestrasz/Crimson/rating.tier13_25');
$xxx = $html->find('div.guildStats dl dd');

foreach($xxx as $k)
echo $k->plaintext."\n";
0 голосов
/ 21 декабря 2011

Вот решение с использованием RegEx.

<?php

$data = implode('', file('http://www.wowprogress.com/guild/us/caelestrasz/Crimson/rating.tier13_25'));
$pat_world = '/<span class="rank blue">(\d+)<\/span>/';
$pat_us = '/<dt>US:\D+(\d+)/';

preg_match($pat_world, $data, $world);
preg_match($pat_us, $data, $us);

echo $world[1];
echo "\n\n";
echo $us[1];

Я знаю, что все против регулярного выражения для очистки веб-страниц, но я думаю, что он отлично работает в простых ситуациях, подобных этой.

0 голосов
/ 21 декабря 2011

Из-за междоменной безопасности вы не можете сделать это с помощью javascript, вам придется получить информацию на стороне вашего сервера, если у вас есть доступ к нему.

...