如何围绕搜索词包装标签并保留原始的大写/小写短语?
所以我有这段代码:
$text = 'Hello world';
$search = 'hello';
$text = str_ireplace($search, '<span>' . $search . '</span>', $text);
echo $text;
结果如下:
<span>hello</span> world
虽然我希望它保留原始信件的情况。所以:
<span>Hello</span> world
我该怎么做?
答案 0 :(得分:1)
您可以使用preg_replace
,它允许反向引用$0
找到的字符串:
$text = preg_replace("~" . preg_quote($search) . "~i", '<span>$0</span>', $text);
确保使用字符作为正则表达式分隔符,而不会出现在搜索字符串中。我拿了~
,但它可能是另一个不寻常的角色。
如果您无法确定,请在搜索字符串中转义所选字符:
$text = preg_replace("~" . str_replace("~", "\\~", preg_quote($search)) . "~i",
'<span>$0</span>', $text);