ucwords()表示单词的第一个字母

时间:2018-12-18 10:19:27

标签: php

我需要一个大写每个单词的第一个字母(而不是符号/字符)的函数。 在这种情况下,我想使用一些类似于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)' );

问题是

  

(或

  

”也许

没有大写,但我需要大写。有人为此提供自定义功能吗?

提前谢谢!

2 个答案:

答案 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)');