我有一个需要改进的脚本。基本上它所做的是接受一个字符串,然后尝试在另一个字符串中搜索该字符串以在其周围插入一些HTML以突出显示。
目前它看起来像这样:
$query = $_POST['$query'];
$searched = "New York Yankees in New York";
str_ireplace($query,"<span class='hilight'>".$query."</span>", $searched);
现在,它可以工作,但是当它涉及大写/小写时,它表现得很奇怪(可预测)。
Say $ query ='new'..返回的字符串为:
<span class='hilight'>new</span> York Yankees in <span class='hilight'>new</span> York.
如果不改变原始搜索字符串的大小写,您将如何完成同样的事情?
答案 0 :(得分:0)
简单的解决方案是使用正则表达式和preg_replace函数:
preg_replace(
// find substring `$query`, flag `i` means case-insensitive search
"/($query)/i",
// replace founded occurences with this string, `$1` here means the value of the founded substring (`new` or `New` or even `NEW`)
"<span class='hilight'>$1</span>",
// string where to find
$searched
);
所以,这里的主要动作是preg_replace:
pattern3 = re.compile("[D|d]escription(:)?(\n)+(=*)(\n)+")
pattern4 = re.compile("[D|d]esired [A|a]ction(:)?((\n)+)(=*)| [R|r]equired [A|a]ction(:)?((\n)+)(=*)")
pattern = re.compile(pattern3 | pattern4)