正则表达式字符串替换大写和小写

regex string substitution upper and lower case

鉴于以下简单函数(对于 PHP 页面),我试图匹配长文本字符串中单词 $marker 的所有出现。我需要强调它的出现。 该功能有效,但存在两个问题:

1) 它无法匹配 $marker

的大写字母

2) 它也匹配部分出现:如果 $marker 是“art”,函数也匹配“artistic ”和“购物车”。

我该如何解决这两个不便?

function highlightWords($string, $marker){
$string = str_replace($marker, "<span class='highlight success'>".$marker."</span>", $string);
return $string;
}

要解决这两个问题,您可以在搜索词周围使用 preg_replace() with a regular expression. Just add the i flag for case-insensitive search and add \b word boundaries,这样它就不能成为另一个词的一部分,例如

function highlightWords($string, $marker){
    $string = preg_replace("/(\b" . preg_quote($marker, "/") . "\b)/i", "<span class='highlight success'></span>", $string);
    return $string;
}