현재 위치: > 최신 기사 목록> MB_DECODE_NUMERICALENTITY 함수의 범위 배열을 올바르게 설정하는 방법

MB_DECODE_NUMERICALENTITY 함수의 범위 배열을 올바르게 설정하는 방법

gitbox 2025-05-29

PHP에서 MB_DECODE_NUMERICALENTITY 함수는 문자열의 숫자 엔티티를 해당 문자로 변환하는 데 사용됩니다. 이것은 HTML 엔티티를 포함하는 텍스트를 변환하는 것과 같은 멀티 파이트 문자 인코딩을 처리 할 때 매우 유용합니다. 범위 배열을 올바르게 설정하는 것은 기능이 올바르게 작동하는지 확인하는 열쇠입니다.


1. MB_DECODE_NUMERICALENTITY 함수 소개

 string mb_decode_numericentity ( string $string , array $map , string $encoding = mb_internal_encoding() )
  • $ String : 변환 할 문자열.

  • $ 맵 : 범위 배열, 숫자 엔티티의 변환 범위 및 오프셋을 정의합니다.

  • $ 인코딩 : 문자 인코딩, 기본값으로의 내부 인코딩.


2. 범위 배열의 형식 및 규칙 $ 맵

범위 어레이는 1 차원 배열이며 길이는 4의 배수 여야합니다. 각 4 가지 요소는 변환 범위를 나타냅니다.

 [
    start_codepoint, end_codepoint, offset, mask,
    start_codepoint, end_codepoint, offset, mask,
    ...
]
  • start_codepoint : 시작 유니 코드 코드 포인트 (소수).

  • end_codepoint : 엔드 유니 코드 코드 포인트 (소수).

  • 오프셋 : 오프셋 (보통 0)은 수치 엔티티 값에 적용됩니다.

  • 마스크 : 마스크, 비트 작업, 일반적으로 0xffff 또는 0xfffffff에 사용됩니다.

참고 : MB_DECODE_NUMERICALITY는 숫자 엔티티 코드 포인트가 start_codepoint 내에있는 문자 만 end_codepoint 범위로 변환됩니다.


3. 예 : 범위 배열을 올바르게 설정합니다

변환하려는 수치 엔티티가 다루는 유니 코드 범위가 기본 멀티 텍스트 평면 (BMP), 즉 0x0에서 0xffff라고 가정합니다.

 $map = [
    0x0, 0xFFFF, 0, 0xFFFF
];

설명은 다음과 같습니다.

  • 모든 유니 코드 코드 포인트에 대해 숫자 엔티티를 0 에서 65535 로 변환합니다.

  • 오프셋 0은 원래 숫자 엔티티 코드 포인트가 조정되지 않았 음을 의미합니다.

  • 마스크 0xffff는 변환 결과가 16 비트 범위로 제한되도록하는 데 사용됩니다.


4. 코드 예제 완료

 <?php
// 문자열이 변환됩니다,수치 엔티티가 포함되어 있습니다
$input = "Hello &#20320;&#22909;!"; // “Hello 안녕하세요!”

// 변환 범위 배열을 설정하십시오,전환하다BMP범위의 엔티티
$map = [0x0, 0xFFFF, 0, 0xFFFF];

// 사용mb_decode_numericentity전환하다
$output = mb_decode_numericentity($input, $map, 'UTF-8');

echo $output;  // 산출:Hello 안녕하세요!
?>

5. 주목할만한 것들

  1. 범위 배열은 4의 배수 여야합니다 . 그렇지 않으면 함수가 유효하지 않습니다.

  2. 달리 요구되지 않는 한 오프셋은 일반적으로 0 으로 설정됩니다.

  3. 마스크는 일반적으로 유니 코드 범위에 따라 0xffff (16 비트) 또는 0xfffffff (32 비트)입니다.

  4. 숫자 엔티티가 범위를 벗어난 경우 함수가 변환되지 않습니다.


6. 요약

  • MB_DECODE_NUMERICALENTITY 의 범위 배열은 어떤 수치 엔티티가 변환되는지를 결정합니다.

  • 대상 문자를 올바르게 구문 분석 할 수 있도록 합리적인 시작 및 종료 코드 포인트 및 마스크를 설정하십시오.

  • 대부분의 일반 장면의 경우 BMP 범위 문자 변환을 만족시키기 위해 [0x0, 0xffff, 0, 0xfff] 를 설정하십시오.

범위 배열 설정을 마스터하면 다양한 멀티 바이트 인코딩 된 문자 엔티티를 유연하게 처리하여 차량 코드 및 구문 분석 오류를 피할 수 있습니다.