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

Форум PHP

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

 

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

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

тема: преобразование кирилицы в латинский
 
 автор: inga   (17.09.2007 в 11:27)   письмо автору
 
 

Вот такая у меня беда, сделала сайт, во всех ссылках использую кирилицу, по ней все тяну из баз. А сегодня узнала, что нельзя пользоваться для таких целей кирилицей, многоие пользователи не смогут заходить по таким ссылкам. Очень много работы переделывать, так вот я думаю может есть функция, что преабразовует кирилицу в латинский и наоборот?

   
 
 автор: provodnik   (17.09.2007 в 11:45)   письмо автору
 
   для: inga   (17.09.2007 в 11:27)
 

Для перевода КИР в ЛАТ я использую ф-ию:

<?
function translit($string) {
// переводим в нижний регистр
$string strtolower($string);
// удаляем лишние символы
$string preg_replace('{[^\w ]}s'''$string);
$string preg_replace('{[ ]+}'' '$string);
// делаем транслит
$string strtr($string
"абвгдежзийклмнопрстуфыэєії",
"abvgdegziyklmnoprstufieeii"
);
$string strtr($string, array(
'ё'=>"yo"'х'=>"h"'ц'=>"ts"'ч'=>"ch"'ш'=>"sh"
'щ'=>"shch"'ъ'=>'''ь'=>'''ю'=>"yu"'я'=>"ya",
));
$explode explode(' '$string); 
$explode array_map('ucfirst'$explode);
$string implode('_'$explode);
return 
$string;
}
?>

Но это необратимый процесс, т.к уничтожаются знаки препинания, всякие нехорошие символы и т.п. Если из итоговую строку этой ф-ии переконвертить обратно в ЛАТ, то она не будет соотв. оригиналу...

   
 
 автор: mihdan   (17.09.2007 в 13:28)   письмо автору
 
   для: provodnik   (17.09.2007 в 11:45)
 

А зачем тогда заменять символы???Оставьте и просто перегоните всю строку в транслит


<?php
// переводит строку на транслит
function str_to_latin($str) {
    
$str trim($str);
    
$rus_arr = array ('а','б','в','г','д','е','ё',
                     
'ж','з','и','й','к','л','м',
                     
'н','о','п','р','с','т','у',
                     
'ф','х','ц','ч','ш','щ','ъ',
                     
'ы','ь','э','ю','я','А','Б',
                     
'В','Г','Д','Е','Ё','Ж','З',
                     
'И','Й','К','Л','М','Н','О',
                     
'П','Р','С','Т','У','Ф','Х',
                     
'Ц','Ч','Ш','Щ','Ъ','Ы','Ь',
                     
'Э','Ю','Я'
                      
);

    
$lat_arr = array ('a','b','v','g','d','e','yo',
                     
'zh','z','i','j','k','l','m',
                     
'n','o','p','r','s','t','u',
                     
'f','h','c','ch','sh','sch','',
                     
'i','','e','yu','ya','a','b',
                     
'v','g','d','e','yo','zh','z',
                     
'i','j','k','l','m','n','o',
                     
'p','r','s','t','u','f','h',
                     
'c','ch','sh','sch','','i',
                     
'','e','yu','ya',
                      );
    
    
// Транслитерация
    
$str str_replace ($rus_arr$lat_arr$str);
    return 
$str;
}
?>

   
 
 автор: provodnik   (17.09.2007 в 17:43)   письмо автору
 
   для: mihdan   (17.09.2007 в 13:28)
 

А если string будет использоваться в качестве части URL? А если там окажутся "нехорошие" символы?

   
 
 автор: Unkind   (17.09.2007 в 21:02)   письмо автору
 
   для: provodnik   (17.09.2007 в 17:43)
 

А если строка будет использоваться как надпись на стене?
Вот не надо так говорить. Если Вам надо передать что-то "нехорошее", то надо url-кодировать строку.

   
Rambler's Top100
вверх

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