如何在连字符后面的大写第一个字母,即亚当史密斯 - 琼斯

Mon*_*Ove 14 php

我正在寻找一种方法来大写字符串的第一个字母/ s,包括名称用连字符连接的地方,例如adam smith-jones需要是Adam Smith-Jones.

ucwords()(或者,ucfirst()如果我将它们分成名字,姓氏)只有Adam Smith-jones

小智 28

$string = implode('-', array_map('ucfirst', explode('-', $string)));
Run Code Online (Sandbox Code Playgroud)


bgo*_*ndy 8

您如何看待以下代码?

mb_convert_case(mb_strtolower($value), MB_CASE_TITLE, "UTF-8");
Run Code Online (Sandbox Code Playgroud)

请注意,这也处理重音字符(对于某些语言如法语有用).

  • 甚至更好:mb_convert_case(mb_strtolower($ value,"UTF-8"),MB_CASE_TITLE,"UTF-8"); (4认同)

The*_*pha 7

这个可以吗 ?

    function to_upper($name)
    {
        $name=ucwords($name);
        $arr=explode('-', $name);
        $name=array();
        foreach($arr as $v)
        {
            $name[]=ucfirst($v);
        }
        $name=implode('-', $name);
        return $name;
    }
    echo to_upper("adam smith-jones");
Run Code Online (Sandbox Code Playgroud)