包裹搜索的术语而不影响大写/小写

时间:2017-10-28 12:07:58

标签: php

如何围绕搜索词包装标签并保留原始的大写/小写短语?

所以我有这段代码:

$text = 'Hello world';
$search = 'hello';
$text = str_ireplace($search, '<span>' . $search . '</span>', $text);
echo $text; 

结果如下:

<span>hello</span> world

虽然我希望它保留原始信件的情况。所以:

<span>Hello</span> world

我该怎么做?

1 个答案:

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