带有split()的PHP简单HTML DOM解析器问题
我想使用在我的网站上显示我所有的Left4Dead Steam成就。steam社区网站上的成就列表如下所示:带有split()的PHP简单HTML DOM解析器问题,php,html,dom,parsing,split,Php,Html,Dom,Parsing,Split,我想使用在我的网站上显示我所有的Left4Dead Steam成就。steam社区网站上的成就列表如下所示: <img src="…" /><br /> <div class="achieveImgHolder"><img src="…" /></div> <div class="achieveTxtHolder"> <img src="…" /> <div class="achieveTxt">
<img src="…" /><br />
<div class="achieveImgHolder"><img src="…" /></div>
<div class="achieveTxtHolder">
<img src="…" />
<div class="achieveTxt">
<h3>Stand Tall</h3>
<h5>Survive a campaign without being incapacitated.</h5>
</div>
</div>
<br clear="left" />
这里到底出了什么问题?改变
$actives->find(".achieveTxtHolder", 0)
到
指定0只返回第一个匹配项,而不是可编辑的匹配项列表;由于您使用的是
foreach
,因此需要所有出现的情况。否则,foreach
会尝试迭代非列表的内容,因此,$Achization
变量实际上是空的,因此当您尝试在其上调用->find()
时会出现错误。感谢您的快速回答。我按照您的建议更改了脚本,但它一直遇到相同的错误。您是否尝试过转储$activeInactiveSplit[0]
和$activeInactiveSplit[1]
(通过类似于print\r($activeInactiveSplit)的内容)
看看它们是否符合你的期望?同样,试着把你从第一次find()
电话中得到的东西倒出来,看看它是否符合你的期望。@Snopey,请点击复选框接受Dav的回答,谢谢。耐心等待,问题似乎还没有完全解决。@Snopey:如果你print\r怎么办($actives->find(“.achieveTxtHolder”)
?
<?php
include("simple-html-dom-parser.php");
$achievementPage = file_get_html("http://steamcommunity.com/id/snorpey/stats/L4D?tab=achievements");
$activeInactiveSplit = split("<br /><br /><br />", $achievementPage);
$actives = str_get_html($activeInactiveSplit[0]);
$inactives = str_get_html($activeInactiveSplit[1]);
foreach($actives->find(".achieveTxtHolder") as $achievement)
{
echo $achievement->find(".achieveTxt h3", 0)->innertext;
}
?>
echo $actives // works w/out errors
$actives->find(".achieveTxtHolder", 0)
$actives->find(".achieveTxtHolder")