我想获得每个锚的innertext。然后打印结果。 id属性中的“ctl”每次增加01。
我必须通过id属性匹配它们,因为这些锚点所在的页面。
我怎么能这样做?
<a id="ctl00_mainContent_rpLeaderboard_ctl01_hypServiceRecord" href="/Stats/Reach/default.aspx?player=DJ+DarkRecon">DJ DarkRecon</a>
<a id="ctl00_mainContent_rpLeaderboard_ctl02_hypServiceRecord" href="/Stats/Reach/default.aspx?player=X+PR+Legacy+X">X PR Legacy X</a>
<a id="ctl00_mainContent_rpLeaderboard_ctl03_hypServiceRecord" href="/Stats/Reach/default.aspx?player=Forgiver2">Forgiver2</a>
答案 0 :(得分:1)
这是使用HTML解析器的一个相当快速的解决方案:
$dom = new DomDocument;
$dom->loadHTML('
<!DOCTYPE html>
<a id="ctl00_mainContent_rpLeaderboard_ctl01_hypServiceRecord" href="/Stats/Reach/default.aspx?player=DJ+DarkRecon">DJ DarkRecon</a>
<a id="ctl00_mainContent_rpLeaderboard_ctl02_hypServiceRecord" href="/Stats/Reach/default.aspx?player=X+PR+Legacy+X">X PR Legacy X</a>
<a id="ctl00_mainContent_rpLeaderboard_ctl03_hypServiceRecord" href="/Stats/Reach/default.aspx?player=Forgiver2">Forgiver2</a>
');
$i = 1;
while($i < 4) {
var_dump($dom->getElementbyId("ctl00_mainContent_rpLeaderboard_ctl0{$i}_hypServiceRecord")->nodeValue);
$i++;
}
通过解析器有很多方法可以解决这个问题,我希望这会给你一些启动。
答案 1 :(得分:0)
怎么样
preg_match_all('~<a[^>]*>([^<]*)</a>~i', $text);
当然,这只是你给出的简单例子。对于更复杂的html问题,正则表达式不是最好的答案。
编辑:
preg_match_all('~<a id="([^"]*)"[^>]*>([^<]*)</a>~i', $text);
如果你也需要id。