DOMDocument-如何从样式/脚本标签中获取所有内部文本?

问题描述

我花了很多时间在一件非常简单的事情上,不得不在这里发布StackOverflow

我想获取除脚本/样式标签之外的所有内部文本

$doc = new DOMDocument;

$doc->preserveWhiteSpace = false;

$html = <<<EOD
<div>
        <script>var main=0</script>
        <div>
            <p>my</p>
            <script>var inner=0</script>
        </div>
        <p>text</p>
        only
</div>
EOD;

$doc->loadHTML($html);

$xpath = new DOMXPath($doc);

echo $entries = $xpath->query('//*[not(self::script)]')->item(0)->nodeValue;

给我

var main=0 my var inner=0 text only

也尝试过

$entries = $xpath->query('//*[not(self::script)]');
foreach ($entries as $entry) {
    if ($entry->tagName == 'style' || $entry->tagName == 'script') {
        continue;
    }
    echo preg_replace('/\s\s+/',' ',$entry->nodeValue);
}

给我

var main=0 my var inner=0 text only var main=0 my var inner=0 text only var main=0 my var inner=0 text only my var inner=0mytext

我尝试了多个xpath,但是没有用

我想要的输出是my text only

我是Scrapy开发人员,我在Scrapy中很容易做到这一点,但是今天对PHP的日子不好过

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)