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

标签 php regex string match uppercase

给定以下简单函数(对于 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/

相关文章:

javascript - 正则表达式以像素为单位转换所有 rem-calc

java - IndexOf 的正则表达式或字符串操作?

c# - 从字符串 C# 中删除特定字符

java - 如何使用 BeanUtils.populate 方法从 String[] 转换为 ArrayList<String>?

regex - 如何在 Chapel 中使用正则表达式提取子字符串?

python - 从字符串中读取字节作为 float

php - 无法启动 php,因为它无法创建 PID 文件

php 执行 curl 不工作

php - APE服务器: How to configure SSL?

php - 使用 PHP 缩放图像并保持纵横比