使用 Xpath 遍历 DOMNodes
Iterating over DOMNodes using Xpath
我试图从一些 html 中提取选项标签的内容,使用这个已有 8 年历史的线程中的方法:
Parsing HTML to get all Option tags with PHP
唯一的区别是我把 html 作为一个字符串,而不是在一个文件中,所以经过适当的修改,我的测试程序是:
$html = "<select name='test'><option value='1'>opt1</option><option value='2'>opt1</option><option value='3'>opt1</option></select>";
$doc = new DOMDocument();
$doc->loadXML($html);
$xpath = new DOMXpath($doc); # parse out each option
// parse the options
$options = $xpath->query("*/select[1]/option");
var_dump ($options);
foreach ($options as $option) {
$optionContent = $option->textContent;
echo ($optionContent);
}
查询似乎有效 - var_dump 的输出是:
object(DOMNodeList)[3]
但是,我没有得到任何选项内容,似乎它没有执行任何"foreach"循环。任何帮助表示赞赏。
这样试一下,看看行不行:
$options = $xpath->query("/select//option");
foreach ($options as $option) {
echo($option->textContent);
}
我试图从一些 html 中提取选项标签的内容,使用这个已有 8 年历史的线程中的方法: Parsing HTML to get all Option tags with PHP 唯一的区别是我把 html 作为一个字符串,而不是在一个文件中,所以经过适当的修改,我的测试程序是:
$html = "<select name='test'><option value='1'>opt1</option><option value='2'>opt1</option><option value='3'>opt1</option></select>";
$doc = new DOMDocument();
$doc->loadXML($html);
$xpath = new DOMXpath($doc); # parse out each option
// parse the options
$options = $xpath->query("*/select[1]/option");
var_dump ($options);
foreach ($options as $option) {
$optionContent = $option->textContent;
echo ($optionContent);
}
查询似乎有效 - var_dump 的输出是:
object(DOMNodeList)[3]
但是,我没有得到任何选项内容,似乎它没有执行任何"foreach"循环。任何帮助表示赞赏。
这样试一下,看看行不行:
$options = $xpath->query("/select//option");
foreach ($options as $option) {
echo($option->textContent);
}