将第一个字母设为大写字母,将其余字母设为小写字母

use*_*676 41 php lowercase uppercase

全部,我正在尝试将姓氏插入数据库.我希望第一个字母大写为名称,如果他们使用两个姓氏,则将第一个和第二个名字大写.例如,如果有人进入:

结婚名字

如果有两个以上的名字,它会将此转换为Marriedname Maidenname等等.另一种情况是有人在他们的名字中有一个撇号,所以如果有人进入,那么无论如何都要这样做:

奥康

这需要转换为O'Connell.我用的是:

ucfirst(strtolower($last_name));
Run Code Online (Sandbox Code Playgroud)

但是,正如您所知,这对所有场景都不起作用.谢谢你的建议!

Pau*_*aul 38

这将使所有单词的第一个字母和撇号后的字母大写.它会使所有其他字母小写.它应该适合你:

str_replace('\' ', '\'', ucwords(str_replace('\'', '\' ', strtolower($last_name))));
Run Code Online (Sandbox Code Playgroud)


小智 23

你可以试试这个词

<?php echo ucwords(strtolower('Dhaka, JAMALPUR, sarishabari')) ?>
Run Code Online (Sandbox Code Playgroud)

结果是: Dhaka, Jamalpur, Sarishabari


Ant*_*Max 21

这些都不是UTF8友好的,所以这里有一个完美无缺的工作(到目前为止)

function titleCase($string, $delimiters = array(" ", "-", ".", "'", "O'", "Mc"), $exceptions = array("and", "to", "of", "das", "dos", "I", "II", "III", "IV", "V", "VI"))
{
    /*
     * Exceptions in lower case are words you don't want converted
     * Exceptions all in upper case are any words you don't want converted to title case
     *   but should be converted to upper case, e.g.:
     *   king henry viii or king henry Viii should be King Henry VIII
     */
    $string = mb_convert_case($string, MB_CASE_TITLE, "UTF-8");
    foreach ($delimiters as $dlnr => $delimiter) {
        $words = explode($delimiter, $string);
        $newwords = array();
        foreach ($words as $wordnr => $word) {
            if (in_array(mb_strtoupper($word, "UTF-8"), $exceptions)) {
                // check exceptions list for any words that should be in upper case
                $word = mb_strtoupper($word, "UTF-8");
            } elseif (in_array(mb_strtolower($word, "UTF-8"), $exceptions)) {
                // check exceptions list for any words that should be in upper case
                $word = mb_strtolower($word, "UTF-8");
            } elseif (!in_array($word, $exceptions)) {
                // convert to uppercase (non-utf8 only)
                $word = ucfirst($word);
            }
            array_push($newwords, $word);
        }
        $string = join($delimiter, $newwords);
   }//foreach
   return $string;
}
Run Code Online (Sandbox Code Playgroud)

用法:

$s = 'SÃO JOÃO DOS SANTOS';
$v = titleCase($s); // 'São João dos Santos' 
Run Code Online (Sandbox Code Playgroud)


小智 5

使用此内置函数:

ucwords('string');
Run Code Online (Sandbox Code Playgroud)

  • 那么ucwords(strtolower('stRing'))`吗? (2认同)