Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Транслитерация в utf8
 
 автор: DJ Paltus   (08.02.2011 в 16:24)   письмо автору
 
 

В очередной раз пришлось с этим столкнуться, я взял за основу функцию Андрея Дрыги (http://softtime.ru/scripts/translit.php) и попытался добить ее до верной обработки UTF-8
Прошу меня поправить, если что не так... )
Итак, скрипт крутится в директории с addDefaultCharset utf8.
<?php
function encodeUTF8string($st){
//конвертируем строку
    
$st iconv("UTF-8""cp1251"$st);
//односимвольные замены - строчные
    
$st=strtr($sticonv("UTF-8""cp1251""абвгдеёзийклмнопрстуфхыэ_"),
                                            
"abvgdeeziyklmnoprstufhye_");
//односимвольные замены - ПРОПИСНЫЕ
    
$st=strtr($sticonv("UTF-8""cp1251""АБВГДЕЁЗИЙКЛМНОПРСТУФХЫЭ_"),
                                            
"ABVGDEEZIYKLMNOPRSTUFHYE_");
//многосимвольные - обрабатываем и кладем в массив
    
$dbyte iconv("UTF-8""cp1251""ж=ц=ч=ш=щ=ь=ю=я=Ж=Ц=Ч=Ш=Щ=Ь=Ю=Я=ї=Ї=є=Є=ъ=Ъ");
    
$dbyte explode("="$dbyte);
//Замены многосимвольных - тоже в массив
//некоторые символы заменяются на ничто, например,
//если речь идет об имени файла, там апострофы ни к чему
    
$dbyte_replace "zh=ts=ch=sh=sch==yu=ya=ZH=TS=CH=SH=SCH==YU=YA=yi=Yi=ie=Ye===";
    
$dbyte_replace explode("="$dbyte_replace);
//Составляем ассоциативный массив замен $rep
    
$i 0;
    
$rep = array();
    foreach(
$dbyte as $o){
        
$rep[$o] = $dbyte_replace[$i];
        
$i ++;
        }
//применяем полученный массив для замены оставшихся кириллических букв в строке
    
$st strtr($st$rep);
    return 
$st;
    }
$string "Экс-граф! Плюш изъят. Бьём чуждый цен хвощ.";
echo 
encodeUTF8string($string);
?>

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования