给定以下简单函数(对于 PHP 页面),我试图匹配长文本字符串中出现的所有单词 $marker
。我需要强调它的发生。
该功能有效,但存在两个问题:
1) 它无法匹配 $marker
的大写出现
2) 它还匹配部分出现:如果 $marker 是“art”,则该函数也匹配“artistic”和“cart”。
如何解决这两个不便?
function highlightWords($string, $marker){
$string = str_replace($marker, "<span class='highlight success'>".$marker."</span>", $string);
return $string;
}
最佳答案
要解决这两个问题,您可以使用 preg_replace()
用正则表达式。只需添加 i
flag对于不区分大小写的搜索并添加 \b
word boundaries围绕您的搜索词,因此它不能是其他词的一部分,例如
function highlightWords($string, $marker){
$string = preg_replace("/(\b" . preg_quote($marker, "/") . "\b)/i", "<span class='highlight success'>$1</span>", $string);
return $string;
}
关于php - 正则表达式字符串替换大写和小写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34592160/