August 19, 2010

ucfirst(), strtolower(), strtoupper и UTF-8

Столкнулся с несовместимостью функций strtolower(), strtoupper(), ucfirst() и ucwords() с кириллицей в кодировке UTF-8. Некоторым из них есть альтернатива, причем доступная штатными средствами PHP: функция mb_convert_case().
string mb_convert_case ($str, $mode [, $encoding])

В качестве $mode может выступать:

  • MB_CASE_UPPER — все символы ЗАГЛАВНЫМИ буквами (аналог strtoupper() и mb_strtoupper())

  • MB_CASE_LOWER — все символы строчными буквами (аналог strtolower() и mb_strtolower())

  • MB_CASE_TITLE — первая буква в каждом слове заглавная (аналог ucwords())

По умолчанию, $mode = MB_CASE_UPPER.

В качестве $encoding может выступать название кодировки, например "utf-8" или "windows-1251". По-умолчанию, $encoding = mb_internal_encoding().

3 comments:

Михаил said...

Большое спасибо! Помогло.

Anonymous said...

Большое спасибо! Мне тоже помогло! Очень удобная функция!

Alexsandra Mamrenko said...

Спасибо, ПОМОГЛО!!