我目前正在为一个客户端做一些工作,这个客户端恰好是魔兽世界游戏的视频游戏组。
他们想在他们的网站上显示他们目前的评分。
分级显示在这里。
他们希望在他们的网站上显示"Oceanic"的号码和"US"的号码。
有没有人能告诉我一种方法,我可以让这些数字自动更新在网站上,如果他们改变?
谢谢!
您可以使用这个代码片段来废弃数据-假设PHP可以,因为您正在运行wordpress。我会将这些值保存在数据库/平行线/缓存中。
<?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";
这很简单。我更喜欢使用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";
由于跨域安全,你不能用javascript这样做,如果你可以访问它,你将不得不获得你的信息服务器端
这是一个使用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 "nn";
echo $us[1];
我知道每个人都反对用正则表达式来抓取网页,但我认为它在像这样的简单情况下工作得很好。