ФорумПрограммированиеPHP для идиотов → Подскажите аналог strtr для многобайтных кодировок?

Подскажите аналог strtr для многобайтных кодировок?

  • adw0rd

    Сообщения: 22908 Репутация: N Группа: в ухо

    Spritz 7 июля 2009 г. 13:08

    mb_strtr нету :(
    Спустя 568 сек.
    или подскажите либу для транслитерации кириллицы, плизз
    adw/0
  • phpdude

    Сообщения: 26632 Репутация: N Группа: в ухо

    Spritz 7 июля 2009 г. 13:17, спустя 9 минут 4 секунды

    для мультибайта тебе надо юзать простой str_replace, он byte safe так что проблем не будет с юникодом. транслия … хз. просто составь табилцу соответствий да используй ее))
    Сапожник без сапог
  • adw0rd

    Сообщения: 22908 Репутация: N Группа: в ухо

    Spritz 7 июля 2009 г. 13:20, спустя 3 минуты 2 секунды

    phpdude, ну у меня и так "таблица соответствий", только из моих старых исходников, там юзался strtr )) перепишу на str_replace, сенк!
    adw/0
  • phpdude

    Сообщения: 26632 Репутация: N Группа: в ухо

    Spritz 7 июля 2009 г. 13:22, спустя 1 минуту 12 секунд


    phpdude, ну у меня и так "таблица соответствий", только из моих старых исходников, там юзался strtr )) перепишу на str_replace, сенк!
    я сам долго искал mb_replace ока не понял что она нахуй не нужна))))) ведь простой реплейс работает со строкой как с байтами а не как со строкой. это с одной стороны хорошо с другой имхо плохо))
    Сапожник без сапог
  • artoodetoo

    Сообщения: 5140 Репутация: N Группа: в ухо

    Spritz 7 июля 2009 г. 15:13, спустя 1 час 51 минуту 40 секунд


    /**
    * Translate russian UTF-8 characters to ASCII
    *
    * Adopted from WordPress plugin rus-to-lat.
    * URI: http://skorobogatov.ru/
    */
    function translit($title, $rtl_standard = 'gost')
    {
    static $gost, $iso;

    switch ($rtl_standard)
    {
     case 'off':
    return $title;

     case 'gost':
    if (empty($gost))
    {
    $gost = array(
    'Є'=>'EH','І'=>'I','і'=>'i','№'=>'#','є'=>'eh',
    'А'=>'A','Б'=>'B','В'=>'V','Г'=>'G','Д'=>'D',
    'Е'=>'E','Ё'=>'JO','Ж'=>'ZH',
    'З'=>'Z','И'=>'I','Й'=>'JJ','К'=>'K','Л'=>'L',
    'М'=>'M','Н'=>'N','О'=>'O','П'=>'P','Р'=>'R',
    'С'=>'S','Т'=>'T','У'=>'U','Ф'=>'F','Х'=>'KH',
    'Ц'=>'C','Ч'=>'CH','Ш'=>'SH','Щ'=>'SHH','Ъ'=>'\'',
    'Ы'=>'Y','Ь'=>'','Э'=>'EH','Ю'=>'YU','Я'=>'YA',
    'а'=>'a','б'=>'b','в'=>'v','г'=>'g','д'=>'d',
    'е'=>'e','ё'=>'jo','ж'=>'zh',
    'з'=>'z','и'=>'i','й'=>'jj','к'=>'k','л'=>'l',
    'м'=>'m','н'=>'n','о'=>'o','п'=>'p','р'=>'r',
    'с'=>'s','т'=>'t','у'=>'u','ф'=>'f','х'=>'kh',
    'ц'=>'c','ч'=>'ch','ш'=>'sh','щ'=>'shh','ъ'=>'',
    'ы'=>'y','ь'=>'','э'=>'eh','ю'=>'yu','я'=>'ya',
    '«'=>'"','»'=>'"','„'=>'"','“'=>'"','—'=>'-');
           }
    return strtr($title, $gost);

     default:
    if (empty($iso))
    {
    $iso = array(
    'Є'=>'YE','І'=>'I','Ѓ'=>'G','і'=>'i','№'=>'#','є'=>'ye','ѓ'=>'g',
    'А'=>'A','Б'=>'B','В'=>'V','Г'=>'G','Д'=>'D',
    'Е'=>'E','Ё'=>'YO','Ж'=>'ZH',
    'З'=>'Z','И'=>'I','Й'=>'J','К'=>'K','Л'=>'L',
    'М'=>'M','Н'=>'N','О'=>'O','П'=>'P','Р'=>'R',
    'С'=>'S','Т'=>'T','У'=>'U','Ф'=>'F','Х'=>'X',
    'Ц'=>'C','Ч'=>'CH','Ш'=>'SH','Щ'=>'SHH','Ъ'=>'\'',
    'Ы'=>'Y','Ь'=>'','Э'=>'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','х'=>'x',
    'ц'=>'c','ч'=>'ch','ш'=>'sh','щ'=>'shh','ъ'=>'',
    'ы'=>'y','ь'=>'','э'=>'e','ю'=>'yu','я'=>'ya',
    '«'=>'"','»'=>'"','„'=>'"','“'=>'"','—'=>'-'
    );
    }
    return strtr($title, $iso);
    }
    }

    ιιlllιlllι унц-унц
  • adw0rd

    Сообщения: 22908 Репутация: N Группа: в ухо

    Spritz 7 июля 2009 г. 15:19, спустя 5 минут 50 секунд

    Я тоже юзал strtr, но он не хера utf8 не поддерживает, где наеб?
    Спустя 52 сек.
    и у меня тоже по госту
    Спустя 55 сек.
    <?php

    class cyr2translate
    {
    public static function encode($str)
    {

    $str = str_replace(
    array(" "),
    array("_"),
    $str
    );

    $str = str_replace(
    array("а", "б", "в", "г", "д", "е", "з", "и", "к", "л", "м", "н", "о", "п", "р", "с", "т", "у", "ф", "ц", "ъ", "ы", "ь"),
    array("a", "b", "v", "g", "d", "e", "z", "i", "k", "l", "m", "n", "o", "p", "r", "s", "t", "u", "f", "с", "", "y", ""),
    $str
    );

    $str = str_replace(
    array("А", "Б", "В", "Г", "Д", "Е", "З", "И", "К", "Л", "М", "Н", "О", "П", "Р", "С", "Т", "У", "Ф", "Ц", "Ъ", "Ы", "Ь"),
    array("A", "B", "V", "G", "D", "E", "Z", "I", "K", "L", "M", "N", "O", "P", "R", "S", "T", "U", "F", "С", "", "Y", ""),
    $str
    );

    $str = str_replace(
    array("э", "х", "й", "ё", "ж", "ч", "ш", "щ", "ю", "я", "Э", "Х", "Й", "Ё", "Ж", "Ч", "Ш", "Щ", "Ю", "Я"),
    array("eh", "kh", "jj", "jo", "zh", "ch", "sh", "shh", "ju", "ja", "EH", "KH", "JJ", "JO", "ZH", "CH", "SH", "SHH", "JU", "JA"),
    $str
    );

    return $str;
    }

    }
    adw/0
  • artoodetoo

    Сообщения: 5140 Репутация: N Группа: в ухо

    Spritz 7 июля 2009 г. 15:23, спустя 3 минуты 52 секунды

    adw0rd, эта функция работает (если сохранишь код в utf8)
    ιιlllιlllι унц-унц
  • adw0rd

    Сообщения: 22908 Репутация: N Группа: в ухо

    Spritz 7 июля 2009 г. 15:36, спустя 13 минут 1 секунду

    странно, моя не работает, хотя и в ютф8
    adw/0
  • artoodetoo

    Сообщения: 5140 Репутация: N Группа: в ухо

    Spritz 7 июля 2009 г. 15:38, спустя 1 минуту 51 секунду

    strtr vs. str_replace ?
    ιιlllιlllι унц-унц
  • adw0rd

    Сообщения: 22908 Репутация: N Группа: в ухо

    Spritz 7 июля 2009 г. 15:38, спустя 40 секунд

    artoodetoo, нет, я просто заюзал str_replace и проблем не знаю с ютф8
    adw/0
  • phpdude

    Сообщения: 26632 Репутация: N Группа: в ухо

    Spritz 7 июля 2009 г. 16:15, спустя 37 минут


    artoodetoo, нет, я просто заюзал str_replace и проблем не знаю с ютф8
    и с другими кодировками знать не будешь)
    Спустя 71 сек.
    тест
    Сапожник без сапог
  • artoodetoo

    Сообщения: 5140 Репутация: N Группа: в ухо

    Spritz 7 июля 2009 г. 16:27, спустя 11 минут 5 секунд

    так я не понял. всё работает — в чём проблема то? :)
    ιιlllιlllι унц-унц
  • adw0rd

    Сообщения: 22908 Репутация: N Группа: в ухо

    Spritz 7 июля 2009 г. 16:28, спустя 1 минуту 10 секунд

    artoodetoo, что работает? Я решил свою проблему (см. первый пост) с помощью str_replace, всё, тему можно закрыть
    adw/0
  • artoodetoo

    Сообщения: 5140 Репутация: N Группа: в ухо

    Spritz 7 июля 2009 г. 16:32, спустя 4 минуты 5 секунд


    mb_strtr нету :(
    Спустя 568 сек.
    или подскажите либу для транслитерации кириллицы, плизз

    mb_strtr нету и хуй с ней. strtr справляется — см. мою функцию, она работает! :)
    если сохраняешь код в 1251 - работает в 1251, сохранишь в utf-8 будет транслитить utf-8
    strtr() без выебонов

    то есть тему можно было не открывать, imho
    ιιlllιlllι унц-унц
  • adw0rd

    Сообщения: 22908 Репутация: N Группа: в ухо

    Spritz 7 июля 2009 г. 16:33, спустя 1 минуту 11 секунд

    mb_strtr нету и хуй с ней. strtr справляется — см. мою функцию, она работает! :)
    если сохраняешь код в 1251 - работает в 1251, сохранишь в utf-8 будет транслитить utf-8
    strtr() без выебонов

    то есть тему можно было не открывать, imho


    еще раз повторяю, я ЮЗАЛ strtr, файл в utf8 - НИХУЯ НЕ РАБОТАЕТ!!! Поэтому и создал тему!
    adw/0

Пожалуйста, авторизуйтесь, чтобы написать комментарий!