Выделение текста: как отобразить HTML-элемент DOM со всеми тегами - PullRequest
1 голос
/ 10 марта 2011

Я хочу выделить указанные ключевые слова в теле документа HTML.Сначала я использовал preg_replace, чтобы поместить вокруг ключевых слов, но, конечно, это вызывало проблемы, если ключевое слово было частью тега, например буква «i» (как в ).Поэтому вместо этого я использую DOM :: loadHTMLFile (путь) для загрузки документа, а затем использую 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 голосов
/ 10 марта 2011

Если вы измените свой код на:

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

Вы, вероятно, можете использовать:

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

для вывода всего HTML-документа.

...