我正在尝试将“预告片/宣传片”中的 T 和 P 大写,但ucwords()
只会将 T 大写。有没有办法做到这一点?
注意:我不能只操作字符串将每个 / 转换为空格,然后再转换为斜杠,因为我将在诸如“音乐视频”之类的字符串上运行它,这些字符串中不应包含斜杠。
您可以使用两种方法。不太可靠,希望没有空格的选项:
str_replace(' ', '/', ucwords(str_replace('/', ' ', "trailer/promo,")));
然后可能是一种更强大的方法:
implode('/', array_map(ucwords, explode('/', "trailer/promo,")));
我敢肯定我可能会想到其他的。可能有类似的东西filter_var()
,埋在某个地方。
ucword 不会这样做,因为除非您在 ucwording 每个单词之后设法将单词分开并再次将它们连接在一起。这是一个简单的例子:
implode('/', array_map('ucwords',explode('/','trailer/promo')));
上面的代码很简单,使用“/”从字符串“trailer/promo”中创建一个数组来分隔单词。然后通过 ucwords() 运行每个单词(使用 array_map() )。在每个单词被 ucwords 处理后,包含已处理值的数组再次使用相同的“/”连接在一起。所有这一切都只是一条线。
感谢 ucwords 的 delimiter 参数,从 PHP 5.4.32 和 5.5.16 开始,就这么简单:
ucwords($string, '/');
您也可以在 php 7.2.24 中使用分隔符
$word = "White/white pearl and silver";
$result = ucwords(ucwords($word)), "/");
结果字符串将是“白色/白色珍珠和银色”
在 Laravel 5.7 中
ucwords(Illuminate\Support\Str::title($word), "/");