突出显示文本,html 标签除外
我使用下面的代码来突出显示文本中的一些关键字:
$message = str_ireplace($words,'<span class="hightlighted_text">'.$words.'</span>',$message);
文本可能包含一些 html 标签,例如 、
等..
如何突出显示“正常”文本(html 标记之间的文本除外)?因为当用户搜索“img”时, 文本将突出显示,并且图像不再起作用。
I'm using the code below to highlight some keywords in a text:
$message = str_ireplace($words,'<span class="hightlighted_text">'.$words.'</span>',$message);
The text may contain some html tags, for example <img>
, <strong>
, etc..
How can I highlight "normal" text, except the text between the html tags? Because when users search for "img" the <img>
text will be highlighted and the image doesn't work anymore.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
使用某种 DOM 解析器。这不是你想用正则表达式做的事情。
Use a DOM parser of some sort. This is not something you want to do with regex.
来自 http://forum.phpfrance .com/vos-contributions/remplacement-selectif-hors-dans-balises-html-t199.html
当 $flag == 1 时,替换函数在 HTML 外部应用。
当 $flag == -1 时,替换函数将应用于 HTML 内部。
应用于您的示例,它会给出类似这样的内容:
享受! ;)
From http://forum.phpfrance.com/vos-contributions/remplacement-selectif-hors-dans-balises-html-t199.html
When $flag == 1, the replacement function is applied outside HTML.
When $flag == -1, the replacement function is applied inside HTML.
Applied to your example, it would give something like this:
Enjoy! ;)
基于@Savageman 的回复更好的代码
Better code based on reply from @Savageman