Posts Tagged win1251
Русские буквы в UTF-8
Часто бывает необходимо работать с кириллицей в UTF-8. PHP до сих не может корректно обрабатывать такие строки. На помощь приходит волшебная функция iconv();
Попробуем обработать русскую строку так, чтобы перевести строку в транслит(например для формирования корректного URL или имени файла для закачки). Напишем функцию rus2lat():
-
function rus2lat($text) {
-
$rus = array(‘ё’,‘й’,‘ц’,‘у’,‘к’,‘е’,‘н’,‘г’,‘ш’,‘щ’,‘з’,‘х’,‘ъ’,‘ф’,‘ы’,‘в’, ‘а’,‘п’,‘р’,‘о’,‘л’,‘д’,‘ж’,‘э’, ‘я’,‘ч’,‘с’,‘м’,‘и’,‘т’,‘ь’,‘б’,‘ю’, ‘ ‘); //задаем массив русских букв
-
$eng = array(‘yo’,‘y’,‘c’,‘u’,‘k’,‘e’,‘n’,‘g’,’sh’,’sch’,‘z’,‘h’,‘_’,‘f’,‘i’,‘v’, ‘a’,‘p’,‘r’,‘o’,‘l’,‘d’,‘zh’,‘e’, ‘ya’,‘ch’,’s’,‘m’,‘i’,‘t’,‘_’,‘b’,‘yu’, ‘_’); //соразмерный массив транслита
-
-
-
for($i = 0;$i <= $count; $i++) { //временно пережимаем всю кириллицу в WIN-1251, для корректной работы
-
$russ[] = iconv(‘UTF-8′, ‘CP1251//IGNORE’,$rus[$i]); //IGNORE - символы, которых нет в конечной кодировке, будут опущены
-
}
-
-
$word = str_replace($russ, $eng, strtolower($word)); //меняем кириллические символы на символы транслита. strtolower можно убрать, тогда придется добавить большие буквы в массивы $rus и $eng.
-
-
}
Результат работы:
Таким же образом можно написать свои функции strtolower_ru(), strtoupper_ru(), ucfirst_ru() и др. Для этого просто надо поиграть со вторым массивом.