这个问题与我之前提出的问题有关,但由于该主题现已结束,我需要进一步提问,我将提出一个新问题,希望这很好.
在我之前的回答中,我简化了问题并导致了简单但不完全正常的解决方案.这些天我实现我的代码时意识到了这一点.
上一篇文章中解决方案的问题在于HTML标记被替换函数打破.我已阅读本网站的许多帖子,我需要使用DOM Parser.我很熟悉这一点,我想通过这个用户"ircmaxell"建议的代码后,但它并没有为我工作.
这是我做的样本:
echo '<style type="text/css">
.ht{
background-color: yellow;
}
</style>';
/* taken from user ircmaxell at https://stackoverflow.com/questions/4081372/highlight-keywords-in-a-paragraph
I just modified line $highlight->setAttribute('class', 'highlight') to $highlight->setAttribute('class', 'ht') and commented the first 2 lines */
function highlight_paragraph($string, $keyword) {
//$string = '<p>foo<b>bar</b></p>';
//$keyword = 'foo';
$dom = new DomDocument();
$dom->loadHtml($string);
$xpath = new DomXpath($dom);
$elements = $xpath->query('//*[contains(.,"'.$keyword.'")]');
foreach ($elements as $element) {
foreach ($element->childNodes as $child) {
if (!$child instanceof DomText) continue;
$fragment = $dom->createDocumentFragment(); …
Run Code Online (Sandbox Code Playgroud)