PHP에서 유니코드 이스케이프 시퀀스 디코딩
PHP에서 "u00ed"와 같은 유니코드 이스케이프 시퀀스를 처리하는 경우 다음이 필요합니다. 적절한 UTF-8 인코딩 문자로 디코딩하는 방법입니다. preg_replace_callback() 함수는 이 문제에 대한 해결책을 제공합니다.
preg_replace_callback()을 사용하여 유니코드 이스케이프 시퀀스를 디코딩하려면 다음 단계를 따르세요.
$str = preg_replace_callback('/\\u([0-9a-fA-F]{4})/', function ($match) { return mb_convert_encoding(pack('H*', $match[1]), 'UTF-8', 'UCS-2BE'); }, $str);
이 정규식 패턴은 다음과 같은 유니코드 이스케이프 시퀀스와 일치합니다. "u00ed"이며 괄호 안에 16진수 코드 포인트를 캡처합니다. 그런 다음 일치하는 콜백 함수는 pack() 및 mb_convert_encoding() 함수를 사용하여 16진수 코드 포인트를 해당 UTF-8 문자로 변환합니다.
C/C/Java/Json 스타일로 작업하는 경우 UTF-16 기반 이스케이프 시퀀스에서는 약간 다른 버전의 정규식을 사용할 수 있습니다.
$str = preg_replace_callback('/\\u([0-9a-fA-F]{4})/', function ($match) { return mb_convert_encoding(pack('H*', $match[1]), 'UTF-8', 'UTF-16BE'); }, $str);
다음을 지정하여 mb_convert_encoding()의 인코딩으로 'UTF-16BE'를 사용하면 UTF-16 빅엔디안 형식이 UTF-8로 올바르게 디코딩되는지 확인할 수 있습니다.
위 내용은 PHP에서 유니코드 이스케이프 시퀀스를 어떻게 디코딩합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!