我正在使用简单的html dom来提取用户梦幻足球队。我要做的是在下面的源代码中获取每个玩家的“id”号码。例如,在下面的div中,“id”是121。
<div id="ismGraphical1" class='ismPitchElement {"coptr": null, "played": 0, "pos": 1, "can_sub": 1, "ep_this": 4.5, "event_points": 2, "id": 121, "sub": 0, "m": 1, "copnr": null, "is_captain": false, "team": 6, "is_vice_captain": false, "type": 1, "ep_next": 4.5} '>
下面的代码返回整个div,但我只想获取id。我尝试过使用嵌套的for循环,但它不起作用。我认为它与div中的数组有关。但不知道从哪里开始。如果有人能指出我的正确指示,我将不胜感激
$html = new simple_html_dom($result);
foreach($html->find('div.ismPitchElement') as $pitchview)
echo $pitchview;
答案 0 :(得分:1)
如果你仍然想使用simplehtmldom lib那么多。
foreach ($html->find('[class^=ismPitchElement]') as $el) {
print json_decode(ltrim($el->{'class'}, "ismPitchElement"))->{'id'};
}
答案 1 :(得分:0)
不需要外部库。您可以使用DOM
和XPath
,这些类是PHP核心的一部分:
$result = <<<EOF
<div id="ismGraphical1" class='ismPitchElement {"coptr": null, "played": 0, "pos": 1, "can_sub": 1, "ep_this": 4.5, "event_points": 2, "id": 121, "sub": 0, "m": 1, "copnr": null, "is_captain": false, "team": 6, "is_vice_captain": false, "type": 1, "ep_next": 4.5} '>
EOF;
$doc = new DOMDocument();
$doc->loadHTML($result);
$selector = new DOMXPath($doc);
foreach($selector->query('//@class[starts-with(., "ismPitchElement")]') as $classattr) {
// remove the prefix using `ltrim()`
$json = json_decode(ltrim($classattr->nodeValue, "ismPitchElement"));
var_dump($json->id);
}
输出:
int(121)