【问题标题】:php dom parser get li palintextphp dom解析器获取li palintext
【发布时间】:2017-03-13 22:38:19
【问题描述】:

我有这样的html:

<li>
    TEXT       <---- GET THIS TEXT
    <ul>
      <li>a</li>
      <li>aa</li>
    </ul>
</li>

我想在 li 元素中获取“TEXT”,但后来我尝试获取 li 元素,我得到了所有元素... 这是我的代码:

$html = str_get_html('<li>TEXT<ul><li>a</li><li>aa</li></ul></li>');
echo $html->find('li', 0)->plaintext

输出: TEXTaaa

但我只需要获取 TEXT。而且我无法添加 id 或其他内容

【问题讨论】:

  • 你用的是什么解析器,链接?
  • 修复了代码,请记得标记为未来用户(和我)的答案。

标签: php html web-scraping domparser


【解决方案1】:

节点之前/之后的每个部分都是一个文本节点,所以你只需要获取第一个子节点:

$foo-&gt;firstChild-&gt;textContent;

我假设 Simple HTML Dom 实现了 DOMDocument...

【讨论】:

    【解决方案2】:

    我解决了!你需要的是获取第一个文本节点:

    <?php
    
    require_once 'simple_html_dom.php';
    
    $html = str_get_html('<li>TEXT<ul><li>a</li><li>aa</li></ul></li>');
    echo $html->find('li text', 0)->plaintext;
    
    ?>
    

    【讨论】:

    • 好的,再举一个例子:$html = str_get_html('
    • TEXTb
      • a
      • aa
    • '); echo $html->find('li', 0)->first_child()->plaintext;现在我得到“b”在这种情况下如何得到“TEST”?
  • 你只需看下一个文本节点:echo $html->find('li text', 1)->plaintext;
  • 【解决方案3】:

    好的,再举一个例子:

    $html = str_get_html('<li>TEXT<a href="">b</a><ul><li>a</li><li>aa</li></ul></li>');
    echo $html->find('li', 0)->first_child()->plaintext;
    

    现在我得到“b”,在这种情况下如何得到“TEST”?

    【讨论】:

    • 你只需看下一个文本节点:echo $html->find('li text', 1)->plaintext;
    • 如果您仍然想要 TEST,请使用相同的查询。如果你想要'b',然后使用 echo $html->find('li text', 1)->plaintext;
    猜你喜欢
    相关资源
    最近更新 更多
    热门标签