PHP语言中字符串上的过滤字词

2022-03-22 00:00:00 string php preg-replace

我有一个字符串,其中每个单词的所有开头都大写。现在我想过滤它,如果它可以检测到单词链接"as,the,of,in等",它将被转换为小写。我有一个代码,可以替换它并将其转换为小写,但只有一个单词,如下所示:

$str = "This Is A Sample String Of Hello World";
$str = preg_replace('/Of/', 'of', $str);

output: This Is A Sample String of Hello World
所以我想要的是过滤上的其他单词,比如字符串上的"is,a"。过滤上的每个单词都要重复使用preg_place,这很奇怪。

谢谢!


解决方案

使用preg_replace_callback():

$str = "This Is A Sample String Of Hello World";
$str = ucfirst(preg_replace_callback(
       '/(Of|Is|A)/',
       create_function(
           '$matches',
           'return strtolower($matches[0]);'
       ),
       $str
   ));
echo $str;

Displays "This is a Sample String of Hello World".

相关文章