Правила работы с UTF-8
1. Использовать нормальные IDE и редакторы, способный сохранять в UTF-8 без BOM (Byte Order Mark), например PhpEd и Notepad++
2. В preg_* функциях использовать модификатор u
(если в паттерне имеются символо-заменители или русские символы напрямую)
Токен \w
и т.п. включают ТОЛЬКО латинские символы, поэтому их приходится эмулировать: #[а-яa-z_\d]#ui
3. Директива mbstring.func_overload
должна быть прописана на уровне php.ini, поскольку с версии php/5.2.8 не поддерживается на уровне .htaccess
На толковых хостингах перегрузка всегда включается, даже если UTF-8 не является кодировкой по умолчанию. Есть директива mbstring.internal_encoding
, которая определяет кодировку системы, и может быть прописана на любом уровне
4. Ф-ии substr()
, strtolower()
, explode()
и др. — успешно перегружаются директивой mbstring.func_overload
5. Ф-ии ucfirst()
, ucwords()
— не перегружаются, поэтому нуждаются в ручной реализации
Вариант реализации:
static function ucfirst($string) { return strtoupper(substr($string,0,1)).substr($string,1); } static function ucwords($string) { return mb_convert_case($string,MB_CASE_TITLE,'utf-8'); }
6. sort()
и др. — формально не работают, но на самом деле только кидают букву ё в конец, что может быть не критично для ваших задач
7. Не использовать операторы $str[n]
/ $str{n}
, для строк, содержащих русские символы
8. Учитывать, что preg_match()
в флагом PREG_OFFSET_CAPTURE
считает байты, а не символы.
9. Для смены кодировок можно юзать mb_convert_encoding()
вместо iconv()
— на один необходимый модуль меньше
10. Между mbstring.func_overload=2
или mbstring.func_overload=6
нет разницы (включаются бесполезные ereg_*
функции)
mbstring.func_overload=7
— повреждает email — НЕ использовать
11. PhpMyAdmin будет жаловаться на включение перегрузки и грозиться потерей данных. Как оно на самом деле — неизвестно. Нагуглить не удалось.
Автор: Клешнин Иван
Полезное
- Подсветка php-кода для сайта
- Сколько зарабатывают веб-разработчики?
- Рассуждения о задачах разработчика
- Правила работы с UTF-8
- Подходы к реализации меню
CMS MODx
CMS MODx — админка
PHP
- Слияние массивов в PHP
- Задачки на знание PHP для начинающих
- Unable to load dynamic library php_curl.dll
- Изображение [] не может быть показано, так как содержит ошибки.
БД
JS, jQuery
Партнёрам по цеху
Copyright © 2008 scabbiaza.net
PHP-программист: программирование сайтов, интернет-магазинов, порталов