我正在创建一个会员卡,显示从他们的个人资料网址中抓取的成员列表并作为图像输出。
描述我想要完成的事情的最佳方式是向您展示:
使用简单 HTML DOM 解析器从那里提取玩家别名、级别和排名。
到目前为止,这是我使用以下代码成功实现的目标:
<?php
include_once('simple_html_dom.php');
function extract_numbers($string) {
preg_match_all('/([\d]+)/', $string, $match);
return $match[0];
}
function scraping_uberstrike($url) {
// create HTML DOM
$html = file_get_html($url);
// Find rank, level and xp
$string = $html->find("h2 p", 0)->innertext;
$numbers_array = extract_numbers($string);
// get name
$ret['Alias'] = $html->find('span[id="uberstrikeUserName"]', 0)->innertext;
// get level
$ret['Level'] = $numbers_array['1'];
// get rank
$ret['Rank'] = $numbers_array['0'];
// clean up memory
$html->clear();
unset($html);
return $ret;
}
// 要抓取的 URL
$links = array (
'http://uberstrike.cmune.com/CommonChannel/Profile?cmid=4758758&channelType=WebPortal&appCallbackUrl=http%3a%2f%2fuberstrike.cmune.com%2fProfile',
'http://uberstrike.cmune.com/CommonChannel/Profile?cmid=5909289&channelType=WebPortal&appCallbackUrl=http%3a%2f%2fuberstrike.cmune.com%2fProfile'
);
$image = imagecreatefrompng("eQ.png");
$color = ImageColorAllocate($image, 203,203,203);
$shadow = ImageColorAllocate($image, 25,25,25);
$font = "ColabBol.otf";
$a=2;
$b=1;
// Outputs the scrape
foreach ($links as $link) {
$ret = scraping_uberstrike($link);
foreach($ret as $k=>$v) {
$a = $a + 40;
$b = $b + 40;
imagettftext($image, 14, 0, 106, $a, $shadow, $font, $v);
imagettftext($image, 14, 0, 105, $b, $color, $font, $v);
}
}
header("content-type: image/png");
imagepng($image);
imagedestroy($image);
?>
请注意如何使用 foreach 循环定位玩家详细信息,我很难获得与我正在尝试做的 jpg 相同的输出。
必须有一些错误或不同的方法用于 foreach 循环才能正确显示详细信息。
如果这有助于您理解我的代码,我已将所有必要的文件放在一个 zip 存档中。
http://lifeofstrange.com/scrape/scrape.zip
我希望我已经说清楚了。
并期待您的解决方案。
谢谢 :)