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); 
// 출력: Tχιστη αλώπηξ βαφής ψημένη γη, δρασκελίζει υπέρ νωθρού κυνός 
?>