在搜索脚本中,我使用这个函数:
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
如何处理?有什么逃跑的方法吗?
在创建正则表达式之前,使用 preg_quote
函数转义$keyword
。
更改开头和结尾括号。 代替$keyword
中的正斜杠/
,请使用不太可能在$keyword
变量中找到的字符。 喜欢这个:
return preg_replace("!($keyword)!i", sprintf('<span style="color: #fff; background-color: %s; padding: 0 0.225rem;">$1</span>', $color), $string);
感叹号!
现在将正则表达式括起来。 目前,$keyword
中的正斜杠正在切断您的正则表达式。