PHP - 突出显示包含HTML的字符串中的文本

Ale*_*lex 5 html php string

所以我正在为评论做一个搜索功能.这里的其他人帮助我查询SQL查询.我还想做的是在结果中突出显示搜索查询文本.

结果存储为HTML格式$variable.<span>例如,如何在标签内包装搜索查询文本,而不会弄乱html.

例如.搜索查询可以是foo bar,输出可以是这样的:

<p>bla bla foo bar bla</p>
Run Code Online (Sandbox Code Playgroud)

所以应该是这样的:

<p>bla <span class="highlight">foo bar</span> bla bla</p>
Run Code Online (Sandbox Code Playgroud)

jd.*_*jd. 7

简单的查找和替换:

$resultHTML = str_replace($searchString, '<span class="highlight">'.$searchString.'</span>', $resultHTML );
Run Code Online (Sandbox Code Playgroud)

  • 不要忘记有一个不区分大小写的版本也... str_ireplace (4认同)

met*_*ras 1

我认为这比看起来更复杂。如果我们正在寻找foo bar那么

<p>bla bla foo bar bla</p>
Run Code Online (Sandbox Code Playgroud)

将被转换成

<p>bla <span class="highlight">foo bar</span> bla bla</p>
Run Code Online (Sandbox Code Playgroud)

但一些特殊情况呢?它可能是foo bar在 HTML 标记内匹配的:

<p>bla bla <span class="foo bar">foo bar</span> bla</p>
Run Code Online (Sandbox Code Playgroud)

将被替换为

<p>bla <span class="<span class="highlight">foo bar</span>">foo bar</span> bla bla</p>
Run Code Online (Sandbox Code Playgroud)

我这样说对吗?我还没有讨论过这个问题,但我建议您检查 CakePHP 的文档(是的,我知道您没有使用该框架——)中的 Text helper,这是highlight()正确处理 HTML 标签的方法。查看源代码,尝试一下,如果它适合您,请继续复制它。