Форум → Программирование → PHP для идиотов → Подскажите аналог strtr для многобайтных кодировок?
Подскажите аналог strtr для многобайтных кодировок?
Страницы: ← Предыдущая страница • Следующая страница →
-
8 июля 2009 г. 0:47, спустя 14 минут 28 секунд
бля, ну я не знаю как заставить strtr НЕ работать. просто работает.
http://cmf.org.ru/testtrans.php
http://cmf.org.ru/testtrans.zipιιlllιlllι унц-унц -
8 июля 2009 г. 0:49, спустя 1 минуту 42 секунды
да забей, наверняка у меня где-то и что-то заглючило, главное что решил проблему, сенк
+ в кармуhttps://smappi.org/ - платформа по созданию API на все случаи жизни -
8 июля 2009 г. 1:43, спустя 53 минуты 49 секунд
почемуто я этому не рад. где-то нас наябывают ©
на всякий случай спасибо.ιιlllιlllι унц-унц -
20 августа 2010 г. 14: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 г. 14:52, спустя 15 минут 31 секунду
-
20 августа 2010 г. 17: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 г. 20:17, спустя 3 часа 15 минут 15 секунд
имел ввиду у phpdude - не обратимая, а та что я привел обратимая.
то, что ты привел - доисторическое дерьмо, неработающее с ютф-8. тебе дорога в дле, до обратимой мне 1 параметр добавить и иф и готово, а тебе выбросить к хуям и переделывать :)Спустя 24 сек.да, у меня стиль объяснения такой, можешь не обижаться и не задавать вопросы не охуел ли я и тп слюни корочеСапожник без сапог -
-
20 августа 2010 г. 21:17, спустя 2 минуты 10 секунд
BoBka_altRUist, тебе сказали "в utf8 не будет работать" -
20 августа 2010 г. 21: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 г. 22: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 сек.ЗЫ форум подвисает малёха при добавлении сообщения :)
Страницы: ← Предыдущая страница • Следующая страница →
Пожалуйста, авторизуйтесь, чтобы написать комментарий!