Загоняю текст в транслит. Удаляю все символы "не цифра и не буква". Велосипедно конечно, но транслит через iconv() у меня не работает. Код (Text): #транслит $translit = array("а"=>"a","б"=>"b","в"=>"v","г"=>"g","д"=>"d","е"=>"e", "ё"=>"yo","ж"=>"j","з"=>"z","и"=>"i","й"=>"i","к"=>"k","л"=>"l", "м"=>"m","н"=>"n","о"=>"o","п"=>"p","р"=>"r","с"=>"s","т"=>"t", "у"=>"y","ф"=>"f","х"=>"h","ц"=>"c","ч"=>"ch", "ш"=>"sh","щ"=>"sh","ы"=>"i","э"=>"e","ю"=>"u","я"=>"ya", "А"=>"A","Б"=>"B","В"=>"V","Г"=>"G","Д"=>"D","Е"=>"E", "Ё"=>"Yo","Ж"=>"J","З"=>"Z","И"=>"I","Й"=>"I","К"=>"K", "Л"=>"L","М"=>"M","Н"=>"N","О"=>"O","П"=>"P", "Р"=>"R","С"=>"S","Т"=>"T","У"=>"Y","Ф"=>"F", "Х"=>"H","Ц"=>"C","Ч"=>"Ch","Ш"=>"Sh","Щ"=>"Sh", "Ы"=>"I","Э"=>"E","Ю"=>"U","Я"=>"Ya", "ь"=>"","Ь"=>"","ъ"=>"","Ъ"=>""); $file_name=strtr($postname, $translit); #ликвидация спец-символов в имени файла $file_name=preg_replace("#\W#","-",$file_name); //не_буквы и не_цифры заменить на тире $file_name=preg_replace("#_#","-",$file_name); //нижнее подчеркивание заменить на тире $file_name=preg_replace("#-{2,}#","-",$file_name); //два и более тире заменить одним $file_name=trim($file_name); //трим #имя файла в нижний регист $file_name=strtolower($file_name); //все в нижний регистр На выхлопе из: Mercedes C63 AMG – показана самая крутая версия Получаю такое: mercedes-c63-amg-вђ-pokazana-samaya-krytaya-versiya "Длинное тире" превращается в вђ. Снес его перед загоном в транслит. А теперь вопрос: С какими еще символами нужно повоевать перед отправкой текста в транслит? смотреть <a href='http://vtraxe.com'>порно онлайн</a> | <a href='http://www.indreamsphuket.ru/arenda-villy-na-phukete/'>Аренда вилл на Пхукете</a> | просмотр <a href='http://gigporno.com/'>анальный мужчина</a> порно
Re: В транслите кукожится "длинного тире", а какие еще симво ну если бы ты буквально сделал "не буквы и не цифры...." не было бы такой проблемы. кстати, последние два preg_replace замени на один trim
Re: В транслите кукожится "длинного тире", а какие еще симво Я вроде так и сделал: preg_replace("#\W#","-",$file_name); //не_буквы и не_цифры заменить на тире Или статья про регулярки меня обманула? В статье про регулярки википедии так написано: \W [^[:word:]] Любой символ, кроме буквенного или цифрового символа или знака подчеркивания. Навылезало еще много мусора, "русские кавычки" тоже скукоживаются в кракозябру...
Реальность тебя не убеждает, похоже. Сделай буквально "не буквы и не цифры", не надо умничать. После strtr Код (PHP): $file_name = strtolower($file_name); $file_name = preg_replace('#[^0-9a-z]+#', '-', $file_name); $file_name = trim($file_name, '-'); и всё! больше ничего не надо