MB_ENCODE_NUMERICALENTITY는 지정된 범위를 숫자 엔티티 형식으로 충족시키는 문자열로 문자를 인코딩하는 데 사용됩니다. 숫자 엔티티 형식은 &#xxxx와 유사합니다. HTML에서 XXXX는 문자에 해당하는 유니 코드 코드 포인트입니다.
기능 프로토 타입 :
string mb_encode_numericentity(string $str, array $convmap, string $encoding = mb_internal_encoding(), bool $is_hex = false)
$ str : 인코딩 할 문자열.
$ convmap : 맵 배열을 변환하여 인코딩 해야하는 문자 범위를 지정합니다. 형식은 시작 코드 포인트, 종료 코드 포인트, 오프셋 값 및 코드 값을 각각 나타내는 4 개의 정수 그룹입니다.
$ 인코딩 : 문자열 인코딩, 내부 인코딩으로의 기본값.
$ IS_HEX : TRUE 로 설정하면 수치 엔티티는 16 진수로 표시됩니다.
MB_DECODE_NUMERICALENTITY는 문자열을 숫자 엔티티 형식으로 원래 멀티 바이트 문자열로 변환하는 데 사용됩니다.
기능 프로토 타입 :
string mb_decode_numericentity(string $str, array $convmap, string $encoding = mb_internal_encoding())
$ str : 문자열이 해독 될 문자열입니다.
$ convmap : mb_encode_numericalentity 와 동일한 함수로 맵 배열을 변환합니다.
$ 인코딩 : 문자열 인코딩.
중국어가 포함 된 문자열을 인코딩하고 모든 중국어를 숫자 엔티티로 변환 한 다음 원래 문자열로 해독하여 복원해야한다고 가정하십시오.
<?php
// 변환 맵을 정의하십시오,커버리지 일반적으로 사용되는 중국어 인코딩 범위
$convmap = [0x4E00, 0x9FFF, 0, 0xFFFF];
// 인코딩 할 문자열
$str = "안녕하세요,세계!Hello World!";
// 코딩,한자를 수치 엔티티로 변환하십시오
$encoded = mb_encode_numericentity($str, $convmap, "UTF-8");
echo "코딩后:\n" . $encoded . "\n";
// 디코딩,수치 엔티티를 중국어로 복원하십시오
$decoded = mb_decode_numericentity($encoded, $convmap, "UTF-8");
echo "디코딩后:\n" . $decoded . "\n";
?>
실행 결과 :
코딩后:
你好,世界!Hello World!
디코딩后:
안녕하세요,세계!Hello World!
때로는 전송 프로세스가 안전하고 사양을 준수하는지 확인하기 위해 Multibyte 문자로 URL 부분을 인코딩해야합니다. 다음은 URL의 경로 부분에 대한 수치 엔티티 인코딩을 사용한 다음 다시 해독하는 간단한 예입니다.
<?php
$convmap = [0x4E00, 0x9FFF, 0, 0xFFFF];
$url = "https://gitbox.net/길/시험";
// 只对길部分코딩
$parsed = parse_url($url);
$encoded_path = mb_encode_numericentity(urldecode($parsed['path']), $convmap, "UTF-8");
// 拼接코딩后的 URL
$encoded_url = $parsed['scheme'] . "://" . $parsed['host'] . $encoded_path;
echo "코딩后的 URL:\n" . $encoded_url . "\n";
// 디코딩길
$decoded_path = mb_decode_numericentity($encoded_path, $convmap, "UTF-8");
// 완료를 복원하십시오 URL
$decoded_url = $parsed['scheme'] . "://" . $parsed['host'] . $decoded_path;
echo "디코딩后的 URL:\n" . $decoded_url . "\n";
?>
산출:
코딩后的 URL:
https://gitbox.net/车路/测试
디코딩后的 URL:
https://gitbox.net/길/시험
mb_encode_numericalentity는 문자열의 지정된 범위 내에서 문자를 숫자 엔티티 인코딩으로 변환하여 변속기 또는 스토리지 중에 다중 바이트 문자가 손상되지 않도록 효과적으로 보호 할 수 있습니다.
MB_DECODE_NUMERICALENTITY는 인코딩 된 숫자 엔티티를 해당 멀티 바이트 문자로 다시 복원 할 책임이 있습니다.
이 두 기능은 서로 함께 사용되며 다중 언어 환경에서 문자열 인코딩 문제를 처리 할 때 매우 편리하며 특히 안전한 전송이 필요한 특수 문자 또는 텍스트 데이터로 URL을 처리하는 데 적합합니다.
이 두 기능을 마스터하면 다중 바이트 스트링 처리의 유연성과 보안이 크게 향상 될 수 있습니다.