我有一个项目列表。我想在搜索术语中使用它们。说清单是:
现在,如果我正在搜索关键字world
(请注意所有字母均为小写字母),我将提供此功能。
preg_replace(/world/, '<span class="label label-search-results">$0</span>', $item);
$item
是每一行,输出为:
警告:
preg_replace()
[function.preg-replace]:分隔符不得为第XX行 /myfile.php 中的字母数字或反斜杠。
如果我使用str_ireplace()
,我不知道找到的文本的原始情况。它会是这样的:
str_ireplace("world", '<span class="label label-search-results">world</span>', $item);
这导致所有world
,World
和WORLD
都是小写的。关于如何在替换后保留案例的任何想法?
答案 0 :(得分:1)
这是preg_replace_callback()
的完美用例,只需像这样使用它:
echo preg_replace_callback("/" . preg_quote($_GET["q"], "/") . "/i", function($m){
return "<span class='label label-search-results'>" . $m[0] . "</span>";
}, $item);
答案 1 :(得分:0)
preg_replace('/(world)/i', '<span class="label label-search-results">$1</span>', $item);
尝试使用标记i
以防止不区分大小写。