感谢您的所有意见。 Initcap函数启动了我的正确路径。我想分享我使用的代码,这正是我所需要的。这也适用于Umlaute并检查空格,点和短划线。
function initCap($string){
mb_internal_encoding('UTF-8');
$return_string ='';
$pattern='/[\wäöüÄÖÜßáéíóúÁÉÍÓÚ]+[\s\.\-]+/';
if(preg_match($pattern, $string)){
while(preg_match($pattern,$string,$temp_array,PREG_OFFSET_CAPTURE,strlen($return_string))){
if(stripos($temp_array[0][0],'von ')===0 ||stripos($temp_array[0][0],'der ')===0){
$return_string.=strtolower($temp_array[0][0]);
}else {
$convert = mb_strtolower($temp_array[0][0]);
$return_string .= mb_strtoupper(mb_substr($convert,0,1)).mb_substr($convert,1);
}
}
$return_string.=ucfirst(strtolower(substr($string,strlen($return_string))));
} else {
$convert = mb_strtolower($string);
$return_string = mb_strtoupper(mb_substr($convert,0,1)).mb_substr($convert,1);
}
return $return_string;
}
你试过了什么? – RiggsFolly
我使用类似CASE的名字LIKE'% - %'来定位单个特殊字符。 – user3931315
可能的重复[如何在MySQL中实现initcap功能?](http://stackoverflow.com/questions/12364086/how-can-i-achieve-initcap-functionality-in-mysql) –