UTF-8 문자열에서 첫 번째 문자만 대문자로 변경하는 함수입니다.
<?php
function ucwords_callback($matches) {
$ucword = mb_substr_replace(ltrim($matches[0]),mb_strtoupper($matches[3]),0,1);
return $matches[2] . $ucword;
}
function mb_substr_replace($str, $replacement, $start , $length=false ) {
preg_match_all('/./us', $str, $match1);
preg_match_all('/./us', $replacement, $match2);
if( $length === false ) {
$length = mb_strlen($str);
}
array_splice($match1[0], $start, $length, $match2[0]);
return join('', $match1[0]);
}
$str = 'tχιστη αλώπηξ βαφής ψημένη γη, δρασκελίζει υπέρ νωθρού κυνός';
$pattern = '/(^|([\x0c\x09\x0b\x0a\x0d\x20]+))([^\x0c\x09\x0b\x0a\x0d\x20]{1})[^\x0c\x09\x0b\x0a\x0d\x20]*/u';
echo preg_replace_callback($pattern, 'ucwords_callback', $str);
?>