突出显示文本:如何使用所有标记回显HTML DOM元素

时间:2011-03-10 17:24:25

标签: php dom html-parsing

我想在HTML文档的正文中突出显示指定的关键字。起初我使用preg_replace来放一个< span>关键字周围,但当然,如果关键字是标记的一部分,如字母“i”(如在< li>中),则会导致问题。所以相反,我使用DOM :: loadHTMLFile(path)来加载文档,然后在每个子元素的值中使用preg_replace。

到目前为止,这么好。我可以回显文档的纯文本,突出显示相应的单词,不受标签的干扰。但是我需要在更改后回复文本包括标签的整个主体,我不知道如何。这是我到目前为止所做的:

if (file_exists('mss/'.$link_title)) {
        $descfile = DOMDocument::loadHTMLFile('mss/'.$link_title);
        foreach ($descfile->childNodes as $e) {
            $desc_output = $e->nodeValue;
            $desc_output = preg_replace($to_highlight, "<span class=\"highlight\">$0</span>", $desc_output);
            }
        echo ???
    }

我应该回应什么?

1 个答案:

答案 0 :(得分:-1)

如果您将代码更改为:

$e->nodeValue = preg_replace($to_highlight, "<span class=\"highlight\">$0</span>", $e->nodeValue);

您可以使用:

http://php.net/manual/de/domdocument.savehtml.php

输出整个html文档。