Viper пишет:Как можно обойти данную проблему "меньшей кровью" ?
По идее в том случае когда вашей функции передается массив с заменяемыми символами - то выполнять никаких дополнительных преобразований не требуется поскольку данные и так находятся в требуемом формате Но так как основной целью видимо является использования регулярного выражения с multibyte-модификатором - то можно сначала выполнить преобразование переданного массива в строку - а потом обработать его с помощью того PHP-кода который приведен в else-ветки По идее отражение сущности работы с multibyte-строками должно сохраниться - потому что в той части PHP-кода которая претерпела изменение использовалось полное копирование строк без их посимвольного разбора - и соответственно если даже трактуемая кодировка была неправильной то строки остались неизменными
Конкретно имелся в виду следующий PHP-код
PHP:
скопировать код в буфер обмена
function mb_strtr($str, $from, $to='') {
$fr_str=""; $to_str="";
for($i=0; $i<count($keys_temp); $i++)
{$fr_str.=$keys_temp[$i]; }
for($i=0; $i<count($values_temp); $i++)
{$to_str.=$values_temp[$i]; }
} else {
$fr_str=$from;
$to_str=$to;
}
return strtr($str, $mapping); }
Если же вам необходимо обрабатывать с помощью регулярного выражения каждую переданную односимольную строку отдельно - то можно использовать обработку переданного хеш-массива в цикле и передачу в регулярное выражение конкретной выбранной односимвольной строки из одного символа - а в качестве массива для замен использовать временный локальный массив содеражщий всегда только одино значение которое будет использоваться в array_push для основного массива