代码之家  ›  专栏  ›  技术社区  ›  Cristian

操作系统相关的strtr问题

  •  0
  • Cristian  · 技术社区  · 14 年前

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

    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;
    }
    

    这个功能在我的开发PC上很好用,我的开发PC运行WindowsXP…但是,当我在运行red hat linux的生产服务器上测试它时,它并不是字符串的大写。字符串是ISO-8859-1编码的。

    我怎样才能让它在Linux中也工作呢?

    1 回复  |  直到 11 年前
        1
  •  1
  •   Rupert Madden-Abbott    14 年前

    你试过用 mb_strtoupper() ?在我的电脑上,这至少转换了你定义的所有字符,尽管它也可能不受欢迎地转换其他字符。

    例如:

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