Показать сообщение отдельно
  #9 (permalink)  
Старый 06.06.2013, 20:59
Аватар для Раед
''
Отправить личное сообщение для Раед Посмотреть профиль Найти все сообщения от Раед
 
Регистрация: 11.12.2011
Сообщений: 636

Сообщение от oneguy
Можно написать функии на PHP, переводящие строки из UTF-8 в CP1251 и обратно, и применять строковые операции к строкам в CP1251
Да, была такая идея, и вот реализация.
function str_caller() {
  $args = func_get_args();
  $f = array_shift($args);
  $r = call_user_func_array($f, str_caller_encode($args));
  $r = str_caller_encode(array($r), true);
  return $r[0];
}
function str_caller_encode($args, $b=false) {
  foreach($args as $k => $v) {
    if (is_string($v)) {
      if ($b) $args[$k] = iconv('windows-1251', 'utf-8', $v);
      else $args[$k] = iconv('utf-8', 'windows-1251', $v);
    }
    if (is_array($v)) $args[$k] = str_caller_encode($v, $b);
  }
  return $args;
}

Вопрос, на сколько это безопасно. Вдруг какие-либо php-функции таки умеют работать с UTF-8 и неправильно переварят вызванный таким образом cp1251. Не хочется лишней путаницы.
Ответить с цитированием