【问题标题】:Getting the text between two spans with "Simple HTML DOM"使用“简单 HTML DOM”获取两个跨度之间的文本
【发布时间】:2011-10-18 04:33:56
【问题描述】:

基本上,我需要获取两个跨度标签之间的文本,并且我尝试了很多不同的方法,但都没有解决方案。 我也在使用 Simple HTML DOM Parser (http://simplehtmldom.sourceforge.net/),所以我能做的有点受限。 这是基本设置:

<span class=1>text here</span> TEXT I NEED TO GET <span class=2>more text</span>

有什么帮助吗?

【问题讨论】:

    标签: php dom text html


    【解决方案1】:

    试试PHP Dom:

    $dom = new DomDocument;
    $dom->loadHtml('
        <span class=1>text here</span> TEXT I NEED TO GET <span class=2>more text</span>
    ');
    
    $xpath = new DomXpath($dom);
    foreach ($xpath->query('//body/text()') as $textNode) {
        echo $textNode->nodeValue; // will be: ' TEXT I NEED TO GET '
    }
    

    【讨论】:

    • 您可能需要对此添加一些解释,因为当您不知道 loadHTML 对 HTML 片段做了什么时,XPath 并不明显。
    • @Gordon 你可能是对的,但似乎这个话题已经结束了。 ;)
    【解决方案2】:

    span 元素之间的文本应该是一个 DOMTextNode 并且是 span 元素的兄弟。如果 SimpleHTMLDom 遵循DOM specs,您应该可以通过以下方式获得它:

    $text = $html->find('span[class=1]', 0)->next_sibling();
    

    如果这不起作用,请考虑使用基于 libxml 的更合适的解析器,例如见

    【讨论】:

    • 返回第二个跨度。我想我必须为新的解析器重写我的代码。
    【解决方案3】:

    find('text', $index)

    这将为您提供文本块。

    试试这个:

    echo $html->find('text',1);
    

    输出:

    TEXT I NEED TO GET
    

    DEMO

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-06-30
      • 2019-03-09
      • 1970-01-01
      • 2016-01-08
      • 2012-10-26
      • 2016-02-07
      • 1970-01-01
      相关资源
      最近更新 更多