【问题标题】:Iterating over DOMNodes using Xpath使用 Xpath 遍历 DOMNode
【发布时间】:2020-05-14 10:55:43
【问题描述】:

我试图从一些 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”循环。任何帮助表示赞赏。

【问题讨论】:

  • 我猜你有错误的查询,用$xpath-&gt;query("/select[1]/option")试试你的代码
  • 谢谢安德烈。我无法将您的评论标记为答案,但这显然是正确的。我将不得不尝试理解为什么这个 8 年前的配方不起作用,而这确实起作用了,所以我需要学习一些 xpath 查询。

标签: php foreach domxpath


【解决方案1】:

试试这个方法,看看是否有效:

$options = $xpath->query("/select//option");
    foreach ($options as $option) {

        echo($option->textContent);

    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-09
    • 2014-02-28
    相关资源
    最近更新 更多