【问题标题】:String replace case insensitive exact matches from an array of words字符串替换单词数组中不区分大小写的完全匹配
【发布时间】:2011-08-18 17:05:19
【问题描述】:

在 PHP 中,我有一个单词数组,我想在字符串中搜索和替换不区分大小写的完全匹配项。示例:

$pattern = array("base", "all");
$str = "first base baseball for all";

$str = str_ireplace($pattern, "FOUND", $str);
echo $str;

输出:第一个 FOUND FOUNDbFOUND for FOUND
预期:FOUND 的第一个 FOUND 棒球

我不想替换“棒球”,因为我只想替换整个单词。有没有办法做到这一点?

【问题讨论】:

    标签: php regex string


    【解决方案1】:

    为此使用preg_replace() 而不是str_ireplace(),因为您可以在正则表达式中定义单词边界。

    $str = "first base baseball for all";
    $pattern = '/\b(base|all)\b/i';
    $str = preg_replace($pattern, "FOUND", $str);
    
    echo $str;
    // first FOUND baseball for FOUND
    

    如果您从数组开始,您可以这样做以从数组中构建正则表达式:

    $words = array('base','all');
    // implode() words into a pipe-delimited string
    $pattern = '/\b(' . implode("|", $words) . ')\b/i';
    $str = preg_replace($pattern, "FOUND", $str);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-02-08
      • 1970-01-01
      • 2014-09-07
      • 1970-01-01
      • 2017-12-09
      • 2018-04-28
      • 2021-03-29
      相关资源
      最近更新 更多