ОС, связанная с проблемой strtr - PullRequest
0 голосов
/ 19 апреля 2010

У меня есть эта функция, которая преобразует все специальные символы в верхний регистр:

function uc_latin1($str) {
    if(!defined("LATIN1_UC_CHARS"))
        define("LATIN1_UC_CHARS", "ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝ");
    if(!defined("LATIN1_LC_CHARS"))
        define("LATIN1_LC_CHARS", "àáâãäåæçèéêëìíîïðñòóôõöøùúûüý");
    $str = strtoupper ( strtr ( $str, LATIN1_LC_CHARS, LATIN1_UC_CHARS ) );
    return $str;
}

Эта функция прекрасно работает на моем ПК для разработки, который работает под управлением Windows XP ... но, когда я тестирую ее на рабочем сервере с Red Hat Linux, она не вводит строку в верхнем регистре. Строка в кодировке ISO-8859-1.

Как я могу заставить его работать и в Linux?

1 Ответ

1 голос
/ 19 апреля 2010

Вы пытались использовать mb_strtoupper () ? На моем компьютере это преобразует, по крайней мере, все символы, которые вы определили, хотя это может нежелательно преобразовывать и других.

Например:

$str = àáâãäåæçèéêëìíîïðñòóôõöøùúûüý;
$str = mb_strtoupper($str);
echo $str;
// Prints ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝ
...