将标记插入搜索的字符串/字符串大小写

时间:2017-06-06 20:23:31

标签: php

我有一个需要改进的脚本。基本上它所做的是接受一个字符串,然后尝试在另一个字符串中搜索该字符串以在其周围插入一些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.

如果不改变原始搜索字符串的大小写,您将如何完成同样的事情?

1 个答案:

答案 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)