|
|
|
| Вот такая у меня беда, сделала сайт, во всех ссылках использую кирилицу, по ней все тяну из баз. А сегодня узнала, что нельзя пользоваться для таких целей кирилицей, многоие пользователи не смогут заходить по таким ссылкам. Очень много работы переделывать, так вот я думаю может есть функция, что преабразовует кирилицу в латинский и наоборот? | |
|
|
|
|
|
|
|
для: 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;
}
?>
|
Но это необратимый процесс, т.к уничтожаются знаки препинания, всякие нехорошие символы и т.п. Если из итоговую строку этой ф-ии переконвертить обратно в ЛАТ, то она не будет соотв. оригиналу... | |
|
|
|
|
|
|
|
для: 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;
}
?>
|
| |
|
|
|
|
|
|
|
для: mihdan
(17.09.2007 в 13:28)
| | А если string будет использоваться в качестве части URL? А если там окажутся "нехорошие" символы? | |
|
|
|
|
|
|
|
для: provodnik
(17.09.2007 в 17:43)
| | А если строка будет использоваться как надпись на стене?
Вот не надо так говорить. Если Вам надо передать что-то "нехорошее", то надо url-кодировать строку. | |
|
|
|
|