如何将字符串中的特定单词小写 php

How to lowercase a specific word in a string php

大家好!!

我需要你的帮助! 这里有 2 个元素:

$string = "Legend Of Zelda";
$array = array("to","of","at");

我想检查 $string 是否包含 $array 元素之一并将其小写。 试过了,但失败了……我觉得 preg_replace 的第一个元素应该是一个模式?

echo preg_replace($array, mb_strtolower($array), $string);

有什么想法吗? 非常感谢来自法国!

也许这可以帮到你:

$content = "Legend Of Zelda";
$array = array("to","of","at");

foreach($array as $value)
{
    $pattern = '/'.$value.'/i';
    $content = preg_replace($pattern, strtolower($value) , $content);
}


echo $content;

使用preg_replace_callback:

$string = "Legend Of Zelda";
$array = array("to","of","at");
echo preg_replace_callback('~\b(?:' . implode("|", $array) . ')\b~ui', function ($m) {
    return mb_strtolower($m[0]);
  }, $string);

参见 PHP demo

这里的正则表达式看起来像 \b(?:to|of|at)\b,参见 its demo online

/i 标志将确保不区分大小写的搜索,/u 将正确处理所有 Unicode 字符。