我试图从下面提取第二个ul的li标签.不幸的是,html中没有类或id来帮助
<ul>
<li>Some text</li>
<li>Some text</li>
<li>Some text</li>
</ul>
<ul>
<li>Some more text</li>
<li>Some more text</li>
<li>Some more text</li>
</ul>
Run Code Online (Sandbox Code Playgroud)
我试过(实际上是一些事情):
$ul = $xpath->query('//ul')->item(1);
$query = '/li';
$lis = $xpath->evaluate($query, $ul);
Run Code Online (Sandbox Code Playgroud)
想到这将得到第二个ul,然后我可以从那里提取.它确实让我得到了第二个ul的html,但我显然误解了` - >评价的东西?因为我的李是李的全部,而不仅仅是第二次.
您可以使用XPath直接访问它们:
$xpath->query('//ul[2]/li');
Run Code Online (Sandbox Code Playgroud)
例:
$html = <<<EOF
<ul>
<li>Some text</li>
<li>Some text</li>
<li>Some text</li>
</ul>
<ul>
<li>Some more text</li>
<li>Some more text</li>
<li>Some more text</li>
</ul>
EOF;
$doc = new DOMDocument();
$doc->loadHTML($html);
$selector = new DOMXpath($doc);
// iterate through them...
foreach($selector->query('//ul[2]/li') as $li) {
echo $li->nodeValue . PHP_EOL;
}
Run Code Online (Sandbox Code Playgroud)
〜
| 归档时间: |
|
| 查看次数: |
2957 次 |
| 最近记录: |