четверг, 6 июня 2013 г.

php Сделать первые буквы слов заглавными

Для того, что бы сделать все первые буквы слов заглавными, надо применить функцию ucwords(), или ucfirst() если нужно сделать заглавной только первую букву в строке:

<?php

echo ucfirst($str); // первая буква строки в верхнем регистре

echo ucwords($str); // все первые буквы слов в верхнем регистре

?>


Если ucwords, или ucfirst не работают, но вы всё сделали правильно, то скорее всего дело в том, что вы используете кодировку utf-8.

Для того что бы перевести все первые буквы слов в верхний регистр в кодировке utf-8 надо использовать mb_convert_case():

<?php

echo mb_convert_case($row->name, MB_CASE_TITLE, 'utf-8'); // аналог ucwords

?>


У этого подхода есть небольшой минус: mb_convert_case($row->name, MB_CASE_TITLE, 'utf-8') сначала переводит всю строку в нижний регистр, и только потом первые буквы слов в верхний.




Для замены ucfirst можно использовать например такой велосипед:

<?php

echo mb_strtoupper(mb_substr($string, 0, 1, 'utf-8'), 'utf-8') . mb_substr($string, 1, mb_strlen($string), 'utf-8');

?>

1 комментарий: