我想在SQL INSERT语句中格式化名称字符串。名称字符串可以包含多个版本的空格(''),破折号(' - ')和点('。')。名称字符串应格式化为首字母大写。请参阅以下示例:
找到一个特殊角色是可能的,但找到一个组合是困难的部分。我很感激任何想法。
也许检查字符串是否已经正确格式化是有意义的,但只有这会简化事情。
答案 0 :(得分:1)
感谢所有评论。 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;
}