PHP将所有全大写单词改为小写

sim*_*Pod 2 php string

我想做这样的事情:

$string = "Lorem ipsum DOLOR Sit amet";
...some magic here... -> $finalString
$finalString = "Lorem ipsum dolor Sit amet"
Run Code Online (Sandbox Code Playgroud)

基本上我不想将所有完全大写的单词转换为完整的小写单词.

小智 6

这是我最初建议的:

$finalString = preg_replace("/\\b[A-Z]+\\b/e", "strtolower(\"\\0\");", $string);
Run Code Online (Sandbox Code Playgroud)

但是,从PHP 5.5.0开始,preg_replace中e修饰符已被弃用.所以正确的替代方案是preg_replace_callback:

$string = "Lorem ipsum DOLOR Sit amet";
$finalString = preg_replace_callback(
    "/\\b[A-Z]+\\b/",
    function($matches){
    return strtolower($matches[0]);
    },
    $string
);
Run Code Online (Sandbox Code Playgroud)

  • `e`修饰符被删除,不是吗? (2认同)
  • preg_replace_callback()可能是更好的方法 (2认同)