如何添加/进入preg_replace模式以突出显示搜索关键字

时间:2017-11-09 04:16:02

标签: php

在搜索脚本中我使用此功能:

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

如何处理?有什么办法逃脱?

2 个答案:

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