我有一个示例代码:
$foo = 'hello world';
$foo = ucwords($foo); // Hello World
但我有一个示例其他代码:
$foo = 'hello-world';
$foo = ucwords($foo);
结果如何是Hello-World
我有一个示例代码:
$foo = 'hello world';
$foo = ucwords($foo); // Hello World
但我有一个示例其他代码:
$foo = 'hello-world';
$foo = ucwords($foo);
结果如何是Hello-World
Use preg_replace_callback
$foo = 'hello-world';
$foo = ucwordsEx($foo);
echo $foo; // Hello-World
Function Used
function ucwordsEx($str) {
return preg_replace_callback ( '/[a-z]+/i', function ($match) {
return ucfirst ( $match [0] );
}, $str );
}
我不得不在很久以前解决这个问题。这将保留字符串中可能存在的连字符、空格和其他字符,并利用任何单词边界。
// Convert a string to mixed-case on word boundaries.
function my_ucfirst($string) {
$temp = preg_split('/(\W)/', $string, -1, PREG_SPLIT_DELIM_CAPTURE);
foreach ($temp as $key => $word) {
$temp[$key] = ucfirst($word);
}
return join ('', $temp);
}