이 기사의 예에서는 PHP가 텍스트 인코딩을 자동으로 인식하고 이를 대상 인코딩으로 변환하는 방법을 설명합니다. 참고할 수 있도록 모든 사람과 공유하세요. 세부 내용은 다음과 같습니다.
PHP가 페이지를 처리할 때 iconv 또는 mb_convert와 같은 함수를 사용하여 문자 집합을 변환하지만 실제로는 전제 조건이 있습니다. 즉, 올바른 변환을 수행하려면 인코딩 입력과 출력이 무엇인지 미리 알아야 합니다.
대부분의 변환은 gbk와 utf-8 사이에서 이루어지지만 변환 개체의 인코딩을 모른다면 어떻게 해야 합니까? Google에서는 UTF8과 utf-8의 인코딩을 쉽게 식별할 수 있는 safeEncoding 기능을 개발했습니다. GBK. 이 함수는 어느 정도 매우 정확하지만 좀 더 복잡한 환경에서는 사용하기가 그리 쉽지 않습니다. 아래에서는 GBK와 UTF-8 인코딩의 차이점을 결합하고 정규식을 사용하여 UTF-8 인코딩을 결정하고 mb_convert_encoding을 사용합니다. 변환 기능 중국에서는 GBK와 UTF-8이 가장 널리 사용되므로 이 기능은 이 두 가지 인코딩을 자동으로 변환합니다.
/** * @ string 需要转换的文字 * @ encoding 目标编码 **/ function detect_encoding($string,$encoding = 'gbk'){ $is_utf8 = preg_match('%^(?:[\x09\x0A\x0D\x20-\x7E]| [\xC2-\xDF][\x80-\xBF]| \xE0[\xA0-\xBF][\x80-\xBF] | [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2} | \xED[\x80-\x9F][\x80-\xBF] | \xF0[\x90-\xBF][\x80-\xBF]{2} | [\xF1-\xF3][\x80-\xBF]{3} | \xF4[\x80-\x8F][\x80-\xBF]{2} )*$%xs', $string); if($is_utf8 && $encoding == 'utf8'){ return $string; }elseif($is_utf8){ return mb_convert_encoding($string, $encoding, "UTF-8"); }else{ return mb_convert_encoding($string, $encoding, 'gbk,gb2312,big5'); } }
이 기사가 모든 사람의 PHP 프로그래밍 설계에 도움이 되기를 바랍니다.