>백엔드 개발 >PHP 튜토리얼 >PHP에서 유니코드 이스케이프 시퀀스를 어떻게 디코딩합니까?

PHP에서 유니코드 이스케이프 시퀀스를 어떻게 디코딩합니까?

Linda Hamilton
Linda Hamilton원래의
2024-12-23 12:02:10711검색

How can I decode Unicode escape sequences in PHP?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.