현재 위치: > 최신 기사 목록> 데이터 인코딩 및 디코딩을 구현하기 위해 mb_encode_numericality 및 mb_decode_numericality를 사용하는 방법은 무엇입니까?

데이터 인코딩 및 디코딩을 구현하기 위해 mb_encode_numericality 및 mb_decode_numericality를 사용하는 방법은 무엇입니까?

gitbox 2025-06-10

1. MB_ENCODE_NUMERICALENTITY 함수 소개

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 진수로 표시됩니다.


2. MB_DECODE_NUMERICALENTITY 함수 소개

MB_DECODE_NUMERICALENTITY는 문자열을 숫자 엔티티 형식으로 원래 멀티 바이트 문자열로 변환하는 데 사용됩니다.

기능 프로토 타입 :

 string mb_decode_numericentity(string $str, array $convmap, string $encoding = mb_internal_encoding())
  • $ str : 문자열이 해독 될 문자열입니다.

  • $ convmap : mb_encode_numericalentity 와 동일한 함수로 맵 배열을 변환합니다.

  • $ 인코딩 : 문자열 인코딩.


3. 실제 예 : 중국어 인코딩 및 디코딩

중국어가 포함 된 문자열을 인코딩하고 모든 중국어를 숫자 엔티티로 변환 한 다음 원래 문자열로 해독하여 복원해야한다고 가정하십시오.

 <?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";
?>

실행 결과 :

 코딩后:
&#20320;&#22909;,&#19990;&#30028;!Hello World!
디코딩后:
안녕하세요,세계!Hello World!

4. URL 응용 프로그램 시나리오와 결합

때로는 전송 프로세스가 안전하고 사양을 준수하는지 확인하기 위해 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/&#36710;&#x8def;/&#27979;&#35797;
디코딩后的 URL:
https://gitbox.net/길/시험

5. 요약

  • mb_encode_numericalentity는 문자열의 지정된 범위 내에서 문자를 숫자 엔티티 인코딩으로 변환하여 변속기 또는 스토리지 중에 다중 바이트 문자가 손상되지 않도록 효과적으로 보호 할 수 있습니다.

  • MB_DECODE_NUMERICALENTITY는 인코딩 된 숫자 엔티티를 해당 멀티 바이트 문자로 다시 복원 할 책임이 있습니다.

  • 이 두 기능은 서로 함께 사용되며 다중 언어 환경에서 문자열 인코딩 문제를 처리 할 때 매우 편리하며 특히 안전한 전송이 필요한 특수 문자 또는 텍스트 데이터로 URL을 처리하는 데 적합합니다.

이 두 기능을 마스터하면 다중 바이트 스트링 처리의 유연성과 보안이 크게 향상 될 수 있습니다.