Translit. Не подумайте что у меня украли аккаунт

4th Ноябрь 2020 | Метки:

Добрый день.

хотелось функцию для транслитерации русск текста … в общем все они на strtr … и соответственно отказываются работат ьс ютф 8 (блин :( )

пришлось скомпилить эту функцию из «готовых» :)

function translit($text)
{
static $ru, $eng;
if(!$ru)
{
$ru=array('а','б','в','г','д','е','з','и','к','л','м','н','о','п','р','с','т','у','ф','х','ц','ы','ш','ь','А','Б','В','Г','Д','Е','З','И','Й','К','Л','М','Н','О','П','Р','С','Т','У','Ф','Х','Ы','Ц','Ш','Ь','ё','ж','ц','ч','ш','щ','ю','я','Ё','Ж','Ц','Ч','Ш','Щ','Ю','Я');
$eng=array('a','b','v','g','d','e','z','i','k','l','m','n','o','p','r','s','t','u','f','h','c','y','w','q','A','B','V','G','D','E','Z','I','J','K','L','M','N','O','P','R','S','T','U','F','H','C','Y','W','Q', 'yo','zh','tc','ch','sh','sh','yu','ya','YO','ZH','TC','CH','SH','SH','YU','YA');
}

$text = str_replace($ru, $eng, $text);
$text = preg_replace("#[^0-9".join("",$eng)."]#", " ", $text);

return preg_replace("#\s+#","-",$text);
}

на всякий случай я тут ее отпощу, может кому еще пригодится :)

зы: До кучи она чистит всякое гавно в отличие от своих аналогов. разбавляя полученный текст «-».

ну все, удачи :)

дуд.

  1. Юрка
    4th Ноябрь 2020 в 20:38

    нормчо!

  2. Познающий
    7th Ноябрь 2020 в 02:55

    По моему пропустил букву Й

  3. Познающий
    8th Ноябрь 2020 в 00:02

    Это точно, спасибо за пример, мне пригодился для создании ЧПУ в одном скриптике. :)

  4. CTAPbIu_MABP
    24th Ноябрь 2020 в 21:26

    два вопроса
    1 не дохуяли заменять сначала str_replace потом preg_replace, одного preg_replace не хватит?
    2 накой хуй у тебя тут символ начала строки «#[^".join("",$eng)."]#»

    • phpdude
      25th Ноябрь 2020 в 00:56

      2. это конечная зачистка говна, подумай что будет в этой регулярке :)
      [^abcdef....Z0..9] — просто стираю гавно всякое, которое не удалось заменить.

      ну и последней регуляркой привожу к красивому виду.

  5. CTAPbIu_MABP
    24th Ноябрь 2020 в 21:27

    я имел ввиду preg_replace_callback

    • phpdude
      25th Ноябрь 2020 в 00:54

      я предполагаю, что str_replace в данной ситуации будет в десятки раз быстрее калбачной функции на каждый совпавший элемент :)

      на самом деле даже каллбак не надо, достаточно одного for($i = 0; $i

      но str_replace както нагляднее.

  6. soulgarden
    10th Февраль 2021 в 21:23

    [php]
    private function encodestring($string)
    {
    $string = strtr($string,»абвгдеёзийклмнопрстуфхъыэ_», «abvgdeeziyklmnoprstufh’iei»);
    $string = strtr($string,»АБВГДЕЁЗИЙКЛМНОПРСТУФХЪЫЭ_», «ABVGDEEZIYKLMNOPRSTUFH’IEI»);
    $string = strtr($string, array(‘ж’ => ‘zh’, ‘ц’ => ‘ts’, ‘ч’ => ‘ch’, ‘ш’ => ‘sh’,
    ‘щ’ => ‘shch’,'ь’ => », ‘ю’ => ‘yu’, ‘я’ => ‘ya’,
    ‘Ж’ => ‘ZH’, ‘Ц’ => ‘TS’, ‘Ч’ => ‘CH’, ‘Ш’ => ‘SH’,
    ‘Щ’ => ‘SHCH’, ‘Ь’ => », ‘Ю’ => ‘YU’, ‘Я’ => ‘YA’,
    ‘ї’ => ‘i’, ‘Ї’ => ‘Yi’, ‘є’ => ‘ie’, ‘Є’ => ‘Ye’
    )
    );
    return $string;
    }
    [php]

  7. soulgarden
    10th Февраль 2021 в 21:26

    неужели не работает с утф???

  8. soulgarden
    12th Февраль 2021 в 04:08

    у меня при загрузке файла функция (выше) обрабатывает название файла. еще не тестил работу

    • phpdude
      12th Февраль 2021 в 21:24

      чо как маленький? strtr — однобайтовая функция, а ютф-8 — мультибайтовая кодировка.

  9. and1
    26th Март 2021 в 02:44

    phpdude :чо как маленький? strtr – однобайтовая функция, а ютф-8 – мультибайтовая кодировка.

    Для utf-8 есть mb_string — прекрасно работает

  10. Troll
    27th Март 2011 в 12:29

    http://docs.php.net/manual/en/function.range.php

Яндекс.Метрика