我需要一个大写每个单词的第一个字母(而不是符号/字符)的函数。 在这种情况下,我想使用一些类似于ucwords()的自定义函数。
例如,这可以正常工作:
// returns: This Works Perfectly
ucwords( 'this works perfectly' );
但是这个失败了:
// returns: This Works Perfectly (or "maybe Not" Always)
// i want a function which returns: This Works Perfectly (Or "Maybe Not" Always)
ucwords( 'this works perfectly (or "maybe not" always)' );
问题是
(或
和
”也许
没有大写,但我需要大写。有人为此提供自定义功能吗?
提前谢谢!
答案 0 :(得分:0)
从PHP 5.5.16版本开始,函数ucwords具有第二个参数$ delimiters,它的默认值为“ \\ t \ r \ n \ f \ v”,如官方文档中所示:{{ 3}}
您可以这样尝试:
$delimiters = " \t\r\n\f\v\"'()"
ucwords( 'this works perfectly (or "maybe not" always)', $delimiters );
答案 1 :(得分:0)
最后,我找到了支持任何字母字符的正确解决方案
<?php
echo preg_replace_callback('/(?<=\s|^|\W|\d)([\p{L}])/u', function($match) {
return mb_strtoupper($match[1]);
}, 'this works perfectly (or "maybe not" always)');