OS相关的strtr问题

时间:2010-04-19 17:48:55

标签: php case-sensitive strtr

我有这个函数将所有特殊字符转换为大写:

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的开发PC中运行良好...但是,当我在运行Red Hat Linux的生产服务器上测试它时,它不会大写字符串。该字符串是ISO-8859-1编码。

我怎样才能在Linux中使用它?

1 个答案:

答案 0 :(得分:1)

您是否尝试过使用mb_strtoupper()?在我的计算机上,这至少会转换您定义的所有字符,尽管它也可能不合需要地转换其他字符。

例如:

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