在Codeigniter中如何将UTF-8十六进制字符串解码为正确的英语

时间:2015-07-22 04:34:11

标签: php codeigniter utf-8

我有codeigniter框架的搜索功能,今天我注意到有些人传递的字符串如Á,ú,ç,é

当输入由codeigniter核心输入传递时,它转换为%C3%81,%C3%BA,%C3%A7,%C3%A9 ,我使用以下codeigniter帮助。

$this->load->helper('text');

convert_accented_characters('è'); // output: e

它将è转换为e,但我如何将 UTF-8 - HEX '%C3%A9'或'c3a9'转换为正确的英文字符,如 A,u,c,e

2 个答案:

答案 0 :(得分:2)

如果您的PHP版本大于或等于5.4,则可以尝试使用Transliterator类。

$transliterator = Transliterator::createFromRules(':: NFD; :: [:Nonspacing Mark:] Remove; :: NFC;', Transliterator::FORWARD);
    $test = ['Á', 'ú', 'ç', 'é','Áúçé'];
    foreach($test as $e) {
        $normalized = $transliterator->transliterate($e);
        echo $e. ' --> '.$normalized."\r\n";
    }

输出:

Á --> A ú --> u ç --> c é --> e Áúçé --> Auce 

*默认情况下,它将被禁用。应该在php.ini文件中启用它以使用此功能。

<强>更新

好像你的数据是URL编码的。所以你必须使用urlencode函数

urldecode("%C3%81, %C3%BA, %C3%A7, %C3%A9"); // Á, ú, ç, é

然后您可以使用CI功能将è转换为e,您已经在使用它了

convert_accented_characters('è'); // output: e

答案 1 :(得分:0)

您可以使用PHP的内置函数进行UTF-8解码:

utf8_decode(string);