我有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
答案 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);