【问题标题】:How to get the text of a node without getting children's text nodes using PHP Simple DOM Parser如何使用 PHP Simple DOM Parser 在不获取子文本节点的情况下获取节点的文本
【发布时间】:2017-09-10 04:25:45
【问题描述】:

我正在使用 PHP Simple DOM Parser 库,我有一个小问题.. 我必须解析一个 HTML 文档,如下所示:

<div>
  here the text I want
  <strong>another text</strong>
 </div>

我想知道是否可以只从 div 标签中获取文本(而不是从 strong 标签中获取文本)。是否可以自动执行此操作(不指定文本的位置)?

提前致谢,

约旦。

【问题讨论】:

    标签: php parsing dom


    【解决方案1】:

    您可以获取div 元素的子元素,并查找文本节点(这将排除strong 和其他元素):

    $html = "<div>
      here the text I want
      <strong>another text</strong>
     </div>";
    
    $dom = new DOMDocument;
    $dom->loadHTML($html);
    $div = $dom->getElementsByTagName('div')[0];
    $text = "";
    foreach($div->childNodes as $node) {
        if ($node->nodeType == XML_TEXT_NODE) $text .= $node->nodeValue;
    }
    echo trim($text);
    

    如果根元素并不总是div,而是可以是任何元素,则将赋值更改为$div,如下所示:

    $div = $dom->getElementsByTagName('body')[0]->childNodes[0]; 
    

    【讨论】:

    • 感谢您的回答!我忘了告诉你根节点不需要 div 标签,你有解决这个问题的方法吗?提前致谢
    • 查看我刚刚添加到答案中的最后一段。
    • 感谢您的回答!
    猜你喜欢
    • 2020-06-21
    • 2012-04-08
    • 1970-01-01
    • 2011-09-18
    • 2015-11-20
    • 2011-07-05
    • 1970-01-01
    • 1970-01-01
    • 2010-11-30
    相关资源
    最近更新 更多