所以我正在为评论做一个搜索功能.这里的其他人帮助我查询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)
简单的查找和替换:
$resultHTML = str_replace($searchString, '<span class="highlight">'.$searchString.'</span>', $resultHTML );
Run Code Online (Sandbox Code Playgroud)
我认为这比看起来更复杂。如果我们正在寻找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 标签的方法。查看源代码,尝试一下,如果它适合您,请继续复制它。