数据库选择结果大写第一个字母的名称

时间:2015-06-25 09:16:54

标签: php uppercase

if ($stmt - > execute()) {
    if ($stmt - > rowCount() > 0) {
        while ($selected_row = $stmt - > fetch(PDO::FETCH_ASSOC)) {
            echo ucwords($selected_row[$name]).
            "   ";
            $basicinfo1[] = $selected_row[$name];
        }
        $input = array_map("unserialize", array_unique(array_map("serialize", $basicinfo1)));
        echo json_encode($input, JSON_UNESCAPED_UNICODE);
        //echo $_GET['callback'] . '('.json_encode($basicinfo1).')';
    }
}

回声结果

JEHOMAR MARIA JAMAICA MARIO MARIEGRACE MARIO MARY ANNE MARILYN MARIA CHRISTINA MARIE GRACE MARBIE MARIA JASMIN MARY JANE MARCIANA LEO MARCCO MARGOT MARIA CRISTINA MARIA TERESA MARK ANTHONY MARK ANA MARIE RALPH MARLON MARIANNE JOEMAR MARITES SHIELA MARIE MARIBETH MARIVIC MARIAN MARCELINO ALMEN MARTIN MARK SUNNY MARLOU MARY JANE MARIA RIA ELMAR MARILYN MARGARITA MARIELA MARJORIE ANNE MARTIN MARIONITO JHOMAR MARIA LUISA MARIE KRISTINE MARY ANN MARCELO MARGIE MARIO CHARL-MARI GEMARIE MARIO JOEMAR MARIA LENIE MARILOU MARILOU MARJORIE MARIA PAZ JOSE MARIE MARYCRIS MARVIN MARY FRANCESS JOURIEMAR MARIE Rose MARY JANE ROSEMARIE MARILYN MARIE-MONIQUE MARIANETH MARIBEL MARICEL MARILYN MARK ANTHONY MARVIN LOEWEN MARK MARVEL MARIANO MARTE JOVEMAR MARIBETH MARIVER MARTE MARILOU EDDIMAR MARIO MARISSA MARITES MARLYN MARWIN MARIETTA MARY ANN MARIVI MARYJANE ANNA MARIA EMMAR MARIO MARITES MARK VINCENT MARILYN MARIBEL MARICEL MARISSA MARK ANTHONY MARK KNEP MARK REGGIE

在此代码中,我尝试使用ucwords更改名称的第一个字母,然后选择行($selected_row[$name]),但回显显示名称没有变化。还是大写字母。是否还有其他方法可以在第一个字母的大写字母中更改单词

2 个答案:

答案 0 :(得分:1)

尝试 -

ucwords(strtolower($selected_row[$name]))

ucwords只会改变第一个字母,但不会照顾其余的字母。因此,首先strtolower将其转换为小写,然后转换为ucwords以将第一个字母转换为大写字母。

答案 1 :(得分:0)

如果你不使用ascii(你应该),使用mb_函数来处理UTF-8字符集是很有用的。如果您在数据库中有外来名称,则会出现这种情况。

尝试

mb_convert_case($selected_row[$name], MB_CASE_TITLE, "UTF-8");

MB_CASE_TITLE将所有单词放在小写字母中,但第一个字母用大写字母表示。与ucwords(strtolower(...))相比,这是一次调用,它处理UTF-8字符。

了解两种方法差异的一个例子:

$str = "Hello guys! I'm émile ÉÀ!";
echo ucwords(strtolower($str));
echo '<br />';
echo mb_convert_case($str, MB_CASE_TITLE, "UTF-8");

输出

  

大家好!我émileÉÀ!

     

大家好!我是ÉmileÉà!

在第一种情况下,strtolower不会将大写的重音字母转换为小写字母(最后一个字母仍然是À而不是à)。并且uwords并没有将émile的é大写。在mb_convert_case的第二种情况下,这是正确处理的。