Форум → Программирование → PHP для идиотов → Подскажите аналог strtr для многобайтных кодировок?
Подскажите аналог strtr для многобайтных кодировок?
Страницы: ← Предыдущая страница • Следующая страница →
-
Июль 8, 2009, 12:47 д.п., спустя 14 минут 28 секунд
бля, ну я не знаю как заставить strtr НЕ работать. просто работает.
http://cmf.org.ru/testtrans.php
http://cmf.org.ru/testtrans.zipιιlllιlllι унц-унц -
Июль 8, 2009, 12:49 д.п., спустя 1 минуту 42 секунды
да забей, наверняка у меня где-то и что-то заглючило, главное что решил проблему, сенк
+ в кармуhttps://smappi.org/ - платформа по созданию API на все случаи жизни -
Июль 8, 2009, 1:43 д.п., спустя 53 минуты 49 секунд
почемуто я этому не рад. где-то нас наябывают ©
на всякий случай спасибо.ιιlllιlllι унц-унц -
Авг. 20, 2010, 2:37 п.п., спустя 408 дней 12 часов 53 минуты
возможно кто-то из вас юзал
strtr так:$s = "это тест"; $rus = "абвгдезийклмнопрстуфхц"; $lat = "abvgdezijklmnoprstufxc"; $s = strtr($s, $rus, $lat);
а кто-то так:$rus_lat = array('а'=>'a','б'=>'b','в'=>'v','г'=>'g','д'=>'d','е'=>'e','з'=>'z','и'=>'i','й'=>'j','к'=>'k','л'=>'l','м'=>'m','н'=>'n','о'=>'o','п'=>'p','р'=>'r','с'=>'s','т'=>'t','у'=>'u','ф'=>'f','х'=>'x','ц'=>'c'); $s = strtr($s, $rus_lat);
-
Авг. 20, 2010, 2:52 п.п., спустя 15 минут 31 секунду
-
Авг. 20, 2010, 5:02 п.п., спустя 2 часа 9 минут 29 секунд
это не обратимая транслитерация потому ничего особенного в ней нет ;)
эта лучше, можно гонять туда-обратно и смысл фразы не изменится )))<?php function UpLow(&$string,$registr='up'){ $upper = 'АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯABCDEFGHIJKLMNOPQRSTUVWXYZ'; $lower = 'абвгдеёжзийклмнопрстуфхцчшщъыьэюяabcdefghijklmnopqrstuvwxyz'; if($registr == 'up') $string = strtr($string,$lower,$upper); else $string = strtr($string,$upper,$lower); } //function UpLow(&$string,$registr='up') function rus2lat($s) { // Функция обратимой перекодировки кириллицы в транслит. UpLow($s); $s=str_replace("ЫА","yha",$s); $s=str_replace("ЫО","yho",$s); $s=str_replace("ЫУ","yhu",$s); $s=str_replace("Ё","yo",$s); $s=str_replace("Ж","zh",$s); $rus = "АБВГДЕЗИЙКЛМНОПРСТУФХЦ"; $lat = "abvgdezijklmnoprstufxc"; $s = strtr($s, $rus, $lat); $s=str_replace("Ч","ch",$s); $s=str_replace("Ш","sh",$s); $s=str_replace("Щ","shh",$s); $s=str_replace("Ъ","qh",$s); $s=str_replace("Ы","y",$s); $s=str_replace("Ь","q",$s); $s=str_replace("Э","eh",$s); $s=str_replace("Ю","yu",$s); $s=str_replace("Я","ya",$s); //$s=str_replace(" ","_",$s); // сохраняем пробел от перехода в %20 //$s=str_replace(",",".h",$s); // сохраняем запятую //$s=str_replace('"','"',$s); // сохраняем кавычки //$s=rawurlencode($s); return $s; } // function rus2lat($s) function lat2rus($s) { // Функция обратной перекодировки транслита в кириллицу. $s=rawurldecode($s); //$s=str_replace(".h",",",$s);// возвращаем запятую //$s=str_replace("_"," ",$s);// возвращаем пробел $s=str_replace("yh","Ы",$s); $s=str_replace("yu","Ю",$s); $s=str_replace("ya","Я",$s); $s=str_replace("yo","Ё",$s); $s=str_replace("shh","Щ",$s); $s=str_replace("eh","Э",$s); $s=str_replace("sh","Ш",$s); $s=str_replace("ch","Ч",$s); $s=str_replace("qh","Ъ",$s); $s=str_replace("zh","Ж",$s); $lat = "abvgdezijklmnoprstufxcyq"; $rus = "АБВГДЕЗИЙКЛМНОПРСТУФХЦЫЬ"; $s = strtr($s, $lat, $rus); UpLow($s,'down'); //$t_s = $s[0]; //UpLow($t_s,'up'); //$s[0] = $t_s; return $s; } // function lat2rus($s) echo lat2rus(rus2lat('это тест')); ?>
Спустя 191 сек.млин, тут даже редактировать свое сообщение нельзя %(
имел ввиду у phpdude - не обратимая, а та что я привел обратимая. -
Авг. 20, 2010, 8:17 п.п., спустя 3 часа 15 минут 15 секунд
имел ввиду у phpdude - не обратимая, а та что я привел обратимая.
то, что ты привел - доисторическое дерьмо, неработающее с ютф-8. тебе дорога в дле, до обратимой мне 1 параметр добавить и иф и готово, а тебе выбросить к хуям и переделывать :)Спустя 24 сек.да, у меня стиль объяснения такой, можешь не обижаться и не задавать вопросы не охуел ли я и тп слюни корочеСапожник без сапог -
-
Авг. 20, 2010, 9:17 п.п., спустя 2 минуты 10 секунд
BoBka_altRUist, тебе сказали "в utf8 не будет работать" -
Авг. 20, 2010, 9:25 п.п., спустя 7 минут 54 секунды
во, я родил ее)Спустя 30 сек.бля, не туда запостил, похуй.Сапожник без сапог -
Авг. 24, 2010, 8:57 д.п., спустя 3 дня 11 часов 32 минуты
там для юникода пару автозамен сделать - 5 минут
вот:public function UpLow($string,$registr='up'){ $upper_lower = array('А'=>'а','Б'=>'б','В'=>'в','Г'=>'г','Д'=>'д','Е'=>'е','Ё'=>'ё','Ж'=>'ж','З'=>'з','И'=>'и','Й'=>'й','К'=>'к','Л'=>'л','М'=>'м','Н'=>'н','О'=>'о','П'=>'п','Р'=>'р','С'=>'с','Т'=>'т','У'=>'у','Ф'=>'ф','Х'=>'х','Ц'=>'ц','Ч'=>'ч','Ш'=>'ш','Щ'=>'щ','Ъ'=>'ъ','Ы'=>'ы','Ь'=>'ь','Э'=>'э','Ю'=>'ю','Я'=>'я','A'=>'a','B'=>'b','C'=>'c','D'=>'d','E'=>'e','F'=>'f','G'=>'g','H'=>'h','I'=>'i','J'=>'j','K'=>'k','L'=>'l','M'=>'m','N'=>'n','O'=>'o','P'=>'p','Q'=>'q','R'=>'r','S'=>'s','T'=>'t','U'=>'u','V'=>'v','W'=>'w','X'=>'x','Y'=>'y','Z'=>'z'); $lower_upper = array('а'=>'А','б'=>'Б','в'=>'В','г'=>'Г','д'=>'Д','е'=>'Е','ё'=>'Ё','ж'=>'Ж','з'=>'З','и'=>'И','й'=>'Й','к'=>'К','л'=>'Л','м'=>'М','н'=>'Н','о'=>'О','п'=>'П','р'=>'Р','с'=>'С','т'=>'Т','у'=>'У','ф'=>'Ф','х'=>'Х','ц'=>'Ц','ч'=>'Ч','ш'=>'Ш','щ'=>'Щ','ъ'=>'Ъ','ы'=>'Ы','ь'=>'Ь','э'=>'Э','ю'=>'Ю','я'=>'Я','a'=>'A','b'=>'B','c'=>'C','d'=>'D','e'=>'E','f'=>'F','g'=>'G','h'=>'H','i'=>'I','j'=>'J','k'=>'K','l'=>'L','m'=>'M','n'=>'N','o'=>'O','p'=>'P','q'=>'Q','r'=>'R','s'=>'S','t'=>'T','u'=>'U','v'=>'V','w'=>'W','x'=>'X','y'=>'Y','z'=>'Z'); if($registr == 'up') $string = strtr($string,$lower_upper); else $string = strtr($string,$upper_lower); return $string; } //function UpLow(&$string,$registr='up') public function rus2lat($s) { // Функция обратимой перекодировки кириллицы в транслит. $s = self::UpLow($s); //а потом только кириллицу в нижний //return $s; $s=str_replace("ЫА","yha",$s); $s=str_replace("ЫО","yho",$s); $s=str_replace("ЫУ","yhu",$s); $s=str_replace("Ё","yo",$s); $s=str_replace("Ж","zh",$s); $rus_lat = array('А'=>'a','Б'=>'b','В'=>'v','Г'=>'g','Д'=>'d','Е'=>'e','З'=>'z','И'=>'i','Й'=>'j','К'=>'k','Л'=>'l','М'=>'m','Н'=>'n','О'=>'o','П'=>'p','Р'=>'r','С'=>'s','Т'=>'t','У'=>'u','Ф'=>'f','Х'=>'x','Ц'=>'c'); $s = strtr($s, $rus_lat); $s=str_replace("Ч","ch",$s); $s=str_replace("Ш","sh",$s); $s=str_replace("Щ","shh",$s); $s=str_replace("Ъ","qh",$s); $s=str_replace("Ы","y",$s); $s=str_replace("Ь","q",$s); $s=str_replace("Э","eh",$s); $s=str_replace("Ю","yu",$s); $s=str_replace("Я","ya",$s); return $s; } // function rus2lat($s)
-
Авг. 24, 2010, 9:34 д.п., спустя 36 минут 27 секунд
BoBka_altRUist, да не работает strtr с utf8 , тебе уже несколько раз сказали -
Авг. 24, 2010, 10:14 д.п., спустя 39 минут 54 секунды
ага, а они (нубы) все еще мозг ебут ))))))))))))))))
BoBka_altRUist, да не работает strtr с utf8 , тебе уже несколько раз сказалиСапожник без сапог -
Авг. 24, 2010, 12:28 п.п., спустя 2 часа 13 минут 53 секунды
:D Функция транслитации класная у юзера. -
Авг. 24, 2010, 10:21 п.п., спустя 9 часов 53 минуты 31 секунду
BoBka_altRUist, да не работает strtr с utf8 , тебе уже несколько раз сказали
Песдёшь! :)function translit($text) { $replace = array('Є'=>'EH','І'=>'I','і'=>'i','№'=>'#','є'=>'eh', 'А'=>'A','Б'=>'B','В'=>'V','Г'=>'G','Д'=>'D', 'Е'=>'E','Ё'=>'JO','Ж'=>'ZH', 'З'=>'Z','И'=>'I','Й'=>'Y','К'=>'K','Л'=>'L', 'М'=>'M','Н'=>'N','О'=>'O','П'=>'P','Р'=>'R', 'С'=>'S','Т'=>'T','У'=>'U','Ф'=>'F','Х'=>'H', 'Ц'=>'C','Ч'=>'CH','Ш'=>'SH','Щ'=>'SHH','Ъ'=>'\'', 'Ы'=>'Y','Ь'=>'','Э'=>'EH','Ю'=>'YU','Я'=>'YA', 'а'=>'a','б'=>'b','в'=>'v','г'=>'g','д'=>'d', 'е'=>'e','ё'=>'jo','ж'=>'zh', 'з'=>'z','и'=>'i','й'=>'y','к'=>'k','л'=>'l', 'м'=>'m','н'=>'n','о'=>'o','п'=>'p','р'=>'r', 'с'=>'s','т'=>'t','у'=>'u','ф'=>'f','х'=>'h', 'ц'=>'c','ч'=>'ch','ш'=>'sh','щ'=>'shh','ъ'=>'', 'ы'=>'y','ь'=>'','э'=>'eh','ю'=>'yu','я'=>'ya', '«'=>'"','»'=>'"','„'=>'"','“'=>'"','—'=>'-'); $text = strtr($text, $replace); return preg_replace("#\s+#","_",$text); }
Отлично всё работает)Спустя 168 сек.Оказывается до меня уже сказали об этом на первой странице) Всё отлично работает, если саму функцию сохранить под ютф-8.Спустя 36 сек.ЗЫ форум подвисает малёха при добавлении сообщения :)
Страницы: ← Предыдущая страница • Следующая страница →
Пожалуйста, авторизуйтесь, чтобы написать комментарий!