在搜索脚本中我使用此功能:
function highlightkeyword($string, $keyword, $color = '#DE6E08')
{
return preg_replace("/($keyword)/i", sprintf('<span style="color: #fff; background-color: %s; padding: 0 0.225rem;">$1</span>', $color), $string);}
这应该是高亮搜索词。但现在我需要搜索单词:“FNPBH / E3”,其中包含正斜杠。
此脚本查找该项但不显示其名称。它给出了错误,如下所示。
Warning: preg_replace(): Unknown modifier 'E' in line: 27
如何处理?有什么办法逃脱?
答案 0 :(得分:0)
在创建正则表达式之前,使用preg_quote
函数转义$keyword
。
答案 1 :(得分:0)
更改开始和结束括号。而不是/
中的正斜杠$keyword
使用您在$keyword
变量中找不到的字符。像这样:
return preg_replace("!($keyword)!i", sprintf('<span style="color: #fff; background-color: %s; padding: 0 0.225rem;">$1</span>', $color), $string);
感叹号!
现在正在围绕正则表达式。目前,$keyword
中的正斜杠正在切断你的正则表达式。