1

我正在尝试将“预告片/宣传片”中的 T 和 P 大写,但ucwords()只会将 T 大写。有没有办法做到这一点?

注意:我不能只操作字符串将每个 / 转换为空格,然后再转换为斜杠,因为我将在诸如“音乐视频”之类的字符串上运行它,这些字符串中不应包含斜杠。

4

4 回答 4

1

您可以使用两种方法。不太可靠,希望没有空格的选项:

str_replace(' ', '/', ucwords(str_replace('/', ' ', "trailer/promo,")));

然后可能是一种更强大的方法:

implode('/', array_map(ucwords, explode('/', "trailer/promo,")));

http://codepad.org/N8FmWRz5

我敢肯定我可能会想到其他的。可能有类似的东西filter_var(),埋在某个地方。

于 2012-12-16T01:55:10.087 回答
1

ucword 不会这样做,因为除非您在 ucwording 每个单词之后设法将单词分开并再次将它们连接在一起。这是一个简单的例子:

implode('/', array_map('ucwords',explode('/','trailer/promo')));

上面的代码很简单,使用“/”从字符串“trailer/promo”中创建一个数组来分隔单词。然后通过 ucwords() 运行每个单词(使用 array_map() )。在每个单词被 ucwords 处理后,包含已处理值的数组再次使用相同的“/”连接在一起。所有这一切都只是一条线。

于 2012-12-16T01:59:36.330 回答
0

感谢 ucwords 的 delimiter 参数,从 PHP 5.4.32 和 5.5.16 开始,就这么简单:

ucwords($string, '/');
于 2018-07-27T08:26:00.410 回答
0

您也可以在 php 7.2.24 中使用分隔符

$word = "White/white pearl and silver";
$result = ucwords(ucwords($word)), "/");

结果字符串将是“白色/白色珍珠和银色”

在 Laravel 5.7 中

ucwords(Illuminate\Support\Str::title($word), "/");
于 2019-11-29T11:00:15.933 回答