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


regex string substitution upper and lower case

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

1) 它无法匹配$marker 的大写出现

2) 它还匹配部分出现:如果$marker是"art",则函数也匹配"art"answers"1cart"。

我该如何纠正这两个不便之处?

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

要解决这两个问题,可以将preg_replace()与正则表达式一起使用。只需为不区分大小写的搜索添加i标志,并在搜索词周围添加'b单词边界,这样它就不能成为另一个单词的一部分,例如

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