Задать вопрос
  • Не работает преобразование strtr?

    @WhiteSEOMagic
    Как сказано в документации функции strtr php.net/manual/ru/function.strtr.php :
    Если указаны три аргумента, эта функция возвращает копию str, в которой все вхождения каждого символа (однобайтного) из from были заменены на соответствующий символ в параметре to, т.е. каждое вхождение из $from[$n] заменяется на $to[$n], где $n это корректное смещение строки в обоих аргументах.

    То есть, для многобайтовой кодировки вместо конструкции:
    $st=strtr($st,"абв","abv");
    ... следует использовать конструкцию:
    $st=strtr($st,
      array(
        "а" => "a",
        "б" => "b",
        "в" => "v",
      )
    );

    ... несмотря на то, что мы заменяем только по одному символу - ведь эти символы многобайтные.
    mb_strtr
    Скорее всего именно поэтому функция mb_strtr отсутствует, так как в ней нет необходимости, достаточно использовать strtr. Хотя с точки зрения юзабилити удобнее было бы писать mb_ для многобайтовых кодировок, так привычнее.
    Ответ написан
    Комментировать