【问题标题】:How to lowercase a specific word in a string php如何小写字符串php中的特定单词
【发布时间】:2020-11-18 20:07:56
【问题描述】:

大家好!!

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

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

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

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

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

【问题讨论】:

  • 此外,mb_strtolower() 需要 string 作为参数,而不是数组。 How do I get PHP errors to display? 可能有助于解决错误
  • foreach($array as $element) $string = str_ireplace($element, strtolower($element), $string);。您可以简单地采用 mb。

标签: php preg-replace lowercase


【解决方案1】:

使用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 字符。

【讨论】:

    【解决方案2】:

    也许这可以帮助你:

    $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;
    

    【讨论】:

      猜你喜欢
      • 2011-06-14
      • 2016-04-04
      • 1970-01-01
      • 1970-01-01
      • 2010-09-20
      • 1970-01-01
      • 2022-11-18
      • 2018-08-06
      • 2021-10-02
      相关资源
      最近更新 更多