我需要一个函数来大写每个单词的第一个字母(而不是符号/字符)。在本例中,我想使用一些类似于ucword()的自定义函数。
例如,它完美地工作了:
// 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)' );问题是
(或
和
“也许
不是资本化的,但我需要它被资本化。有人对此有自定义功能吗?
提前谢谢你!
发布于 2018-12-18 10:27:39
由于PHPVersion5.5.16,函数ucword有第二个名为$delimiters的参数,它的默认值是“\t\r\n\f\v",在正式文档:http://php.net/manual/en/function.ucwords.php中可以看到
你可以这样做:
$delimiters = " \t\r\n\f\v\"'()"
ucwords( 'this works perfectly (or "maybe not" always)', $delimiters );发布于 2018-12-18 10:47:00
最后,我找到了支持任何字母字符的正确解决方案
<?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)');https://stackoverflow.com/questions/53830861
复制相似问题