Свернутый текст
function rus2translit($string) {
$converter = array(
'а' => 'a', 'б' => 'b', 'в' => 'v',
'г' => 'g', 'д' => 'd', 'е' => 'e',
'ё' => 'e', 'ж' => 'zh', 'з' => 'z',
'и' => 'i', 'й' => 'y', 'к' => 'k',
'л' => 'l', 'м' => 'm', 'н' => 'n',
'о' => 'o', 'п' => 'p', 'р' => 'r',
'с' => 's', 'т' => 't', 'у' => 'u',
'ф' => 'f', 'х' => 'h', 'ц' => 'c',
'ч' => 'ch', 'ш' => 'sh', 'щ' => 'sch',
'ь' => '\'', 'ы' => 'y', 'ъ' => '\'',
'э' => 'e', 'ю' => 'yu', 'я' => 'ya',
'А' => 'A', 'Б' => 'B', 'В' => 'V',
'Г' => 'G', 'Д' => 'D', 'Е' => 'E',
'Ё' => 'E', 'Ж' => 'Zh', 'З' => 'Z',
'И' => 'I', 'Й' => 'Y', 'К' => 'K',
'Л' => 'L', 'М' => 'M', 'Н' => 'N',
'О' => 'O', 'П' => 'P', 'Р' => 'R',
'С' => 'S', 'Т' => 'T', 'У' => 'U',
'Ф' => 'F', 'Х' => 'H', 'Ц' => 'C',
'Ч' => 'Ch', 'Ш' => 'Sh', 'Щ' => 'Sch',
'Ь' => '\'', 'Ы' => 'Y', 'Ъ' => '\'',
'Э' => 'E', 'Ю' => 'Yu', 'Я' => 'Ya',
);
return strtr($string, $converter);
}
function str2url($str) {
// переводим в транслит
$str = rus2translit($str);
// в нижний регистр
$str = strtolower($str);
// заменям все ненужное нам на "-"
$str = preg_replace('~[^-a-z0-9_]+~u', '-', $str);
// удаляем начальные и конечные '-'
$str = trim($str, "-");
return $str;
}
но вот не могу понять принцип преобразования ссылок, подскажите
Спустя 1 час, 20 минут, 36 секунд (20.11.2009 - 20:46) ИНСИ написал(а):
если правильно понял, как использовать? то наверное так:
вернет: http://vot_moya_ssylka.ru =)
$url = 'http://вот моя ссылка.ru';
$url = str2url($url);
вернет: http://vot_moya_ssylka.ru =)
Спустя 1 день, 17 часов, 33 минуты, 21 секунда (22.11.2009 - 14:19) roland_07 написал(а):
вот еще проблема если встречаются некие "левые" символы, например: ׳'~,”„‘’‚‛
то транслит не работает, он их не может заменить, можете подсказать универсальное регулярное выражение заменяющее все символы на тирэ?
то транслит не работает, он их не может заменить, можете подсказать универсальное регулярное выражение заменяющее все символы на тирэ?
Спустя 32 минуты, 55 секунд (22.11.2009 - 14:52) ZSH написал(а):
А зачем регулярка ?
добавь в $converter некие "левые" символы и замену их.
добавь в $converter некие "левые" символы и замену их.
Спустя 2 часа, 39 минут, 26 секунд (22.11.2009 - 17:31) FatCat написал(а):
Я пользуюсь самописной:
function ru2en($txt){
$ru = explode(" ","е ё ж ч ш ю я а б в г д з и й к л м н о п р с т у ф х ц щ ы э");
$en = explode(" ","je jo zh ch sh ju ja a b v g d z i j k l m n o p r s t u f h c w y e");
for($i=0;$i<count($en);$i++)$txt = str_replace($ru[$i],$en[$i],strtolower($txt));
$txt = preg_replace( "/[^a-zA-Z0-9-_]/", "-", $txt );
return $txt;
}