如何将 / 添加到搜索突出显示关键字的preg_replace模式中



在搜索脚本中,我使用这个函数:

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中的正斜杠正在切断您的正则表达式。

最新更新