MYSQL - 带分隔符的格式名称字符串

时间:2016-10-08 23:00:21

标签: mysql

我想在SQL INSERT语句中格式化名称字符串。名称字符串可以包含多个版本的空格(''),破折号(' - ')和点('。')。名称字符串应格式化为首字母大写。请参阅以下示例:

  • john doe - >约翰·多伊
  • AL ARMIN可以 - > Al Armin Can
  • math-LY HAROUN - > Math-Ly Haroun
  • ST。约翰 - >圣约翰

找到一个特殊角色是可能的,但找到一个组合是困难的部分。我很感激任何想法。

也许检查字符串是否已经正确格式化是有意义的,但只有这会简化事情。

1 个答案:

答案 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;
}