正则表达式字符串替换大写和小写
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;
}
鉴于以下简单函数(对于 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;
}