현재 위치: > 최신 기사 목록> 문자열 자르기 및 차량 문제를 피하기 위해 MB_SUBSTITUE_CHARACTER를 사용하는 방법은 무엇입니까?

문자열 자르기 및 차량 문제를 피하기 위해 MB_SUBSTITUE_CHARACTER를 사용하는 방법은 무엇입니까?

gitbox 2025-09-03

문자열 자르기 및 차량 문제를 피하기 위해 MB_SUBSTITUE_CHARACTER를 사용하는 방법은 무엇입니까?

다중 바이트 인코딩 (예 : UTF-8, GBK 등)을 다룰 때 특히 문자열 작업을 수행하거나 가로 채는 경우 종종 문제가 발생하거나 잘린 문제가 발생합니다. PHP는 이러한 문제를 처리하기위한 몇 가지 기능을 제공하며 MB_SUBSTITUE_CHARACTER는 매우 유용한 도구입니다. 이 기사에서는 문자열 자르기 및 garred 문제를 피하기 위해 MB_SUBSTITUE_CHARACTER를 사용하는 방법을 소개합니다.

1. MB_SUBSTITUE_CHARACTER 기능 소개

MB_SUBSTITUE_CHARACTER 는 PHP Multibyte String Extension (MBString)의 함수입니다. 주요 기능은 멀티 바이트 스트링 작업 중에 발생하는 유효하지 않거나 불법적 인 문자를 대체하기 위해 대체 문자를 지정하는 것입니다. 이런 식으로 입력 문자열에 인식되지 않은 문자가 있더라도 불법 문자가 발생하여 프로그램이 충돌하거나 출력되지 않도록 할 수 있습니다.

기능 프로토 타입 :

 <span><span><span class="hljs-title function_ invoke__">mb_substitute_character</span></span><span>([</span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$substitute_char</span></span><span> = MB_SUBSTITUTE_CHARACTER]);
</span></span>
  • $ 대체 _CHAR : 대체 문자를 지정하는 데 사용되거나 문자 인코딩 된 정수 값이거나 상수 MB_Substite_character를 사용할 수 있습니다. 기본값은 mb_substite_character 입니다. 이는 기본 대체 문자 (일반적으로 물음표 "?")를 의미합니다.

2. 끈 잘린 문제가 발생하는 이유는 무엇입니까?

캐릭터 차단 ( MB_SUBSTR ) 또는 캐릭터 검색 ( MB_STRPOS )과 같은 멀티 바이트 문자열을 작동 할 때 문자의 경계가 올바르게 처리되지 않으면 차량 또는 불완전한 문자 자리가 발생할 수 있습니다. 모든 문자가 같은 수의 바이트를 차지하는 것은 아니기 때문입니다. 올바른 바이트 수에 따라 인터셉트 또는 작업이 수행되지 않으면 캐릭터의 일부가 실수로 차단 될 수있어 코드가 나옵니다.

3. MB_SUBSTITUE_CHARACTER를 통한 차량 코드 및 자리를 피하는 방법은 무엇입니까?

문자열을 처리 할 때는 문제가 없거나 잘린 문제가 없도록하려면 MB_Substitute_character를 사용하여 대체 문자를 설정하고 인식 할 수 없거나 불법적 인 캐릭터를 만날 때이 문자를 사용하여 원래 문자를 대체 할 수 있습니다. 이런 식으로, 프로그램은 계속 실행될 수있을뿐만 아니라 출력 문자열도 더 친숙해지면서 직접 충돌 또는 멍청한 디스플레이를 피할 수 있습니다.

예 1 : 대체 문자를 물음표로 지정합니다 ( "?")

 <span><span><span class="hljs-comment">// 대체 문자를 물음표로 설정하십시오“?”</span></span><span>
</span><span><span class="hljs-title function_ invoke__">mb_substitute_character</span></span><span>(<span class="hljs-string">'?");
 
// 샘플 문자열
$string = "Hello, 안녕하세요,세계!";
 
// 우리가 사용한다고 가정하십시오 gbk 인코딩 된 문자열,멀티 바이트 차단을 수행하십시오
echo mb_substr($string, 0, 10, '</span>GBK<span class="hljs-string">');
</span></span></span>

이 코드에서 문자열을 올바르게 처리 할 수없는 경우 시스템은 오류를 던지거나 직접 차량 문자를 표시하는 대신 물음표 ( "?")를 사용합니다.

예 2 : 대체 문자를 사용한 정수 인코딩

대체 문자의 정수 값을 사용하여 표시된 대체 문자를 추가로 제어 할 수 있습니다. 예를 들어, 유니 코드 인코딩 "?" 불법 캐릭터 대신 캐릭터.

 <span><span><span class="hljs-comment">// 대체 문자를 설정하십시오Unicode인코딩“?”(U+FFFD)</span></span><span>
</span><span><span class="hljs-title function_ invoke__">mb_substitute_character</span></span><span>(</span><span><span class="hljs-number">0xFFFD</span></span><span>);

</span><span><span class="hljs-comment">// 샘플 문자열</span></span><span>
</span><span><span class="hljs-variable">$string</span></span><span> = </span><span><span class="hljs-string">"Hello, 안녕하세요,world!"</span></span><span>;
 
</span><span><span class="hljs-comment">// 사용 UTF-8 인터셉트를위한 인코딩</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">mb_substr</span></span><span>(</span><span><span class="hljs-variable">$string</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-number">10</span></span><span>, </span><span><span class="hljs-string">'UTF-8'</span></span><span>);
</span></span>

이 예에서 불법 또는 인식되지 않은 문자가 "?"로 대체됩니다. 가공 할 수없는 문자가 발생하더라도 프로그램이 계속 우아하게 실행될 수 있도록 기호.

4. 일반적인 사용 시나리오

4.1 다중 바이트 캐릭터 차단시

다중 바이트 문자열을 가로 채면 MB_Substr 함수는 MB_Substite_character 와 함께 사용하여 부적절한 차단 위치로 인한 문자 자리를 피할 수 있습니다.

 <span><span><span class="hljs-comment">// 대체 문자 설정</span></span><span>
</span><span><span class="hljs-title function_ invoke__">mb_substitute_character</span></span><span>(</span><span><span class="hljs-string">'?'</span></span><span>);

</span><span><span class="hljs-comment">// 멀티 바이트 문자가 포함 된 문자열이 있다고 가정합니다</span></span><span>
</span><span><span class="hljs-variable">$string</span></span><span> = </span><span><span class="hljs-string">"이것은 테스트 텍스트입니다"</span></span><span>;

</span><span><span class="hljs-comment">// 처음 열 문자를 가로 채십시오</span></span><span>
</span><span><span class="hljs-variable">$sub_string</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mb_substr</span></span><span>(</span><span><span class="hljs-variable">$string</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-number">10</span></span><span>, </span><span><span class="hljs-string">'UTF-8'</span></span><span>);

</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$sub_string</span></span><span>;  </span><span><span class="hljs-comment">// 산출 “이것은 테스트입니다”</span></span><span>
</span></span>

정규 서브 기능을 직접 사용하여 문자열을 가로 채면 코드 문제가 발생할 수 있습니다. 이 상황은 MB_Substr 이후에 피할 수 있으며 적절한 대체 문자를 설정합니다.

4.2 변환을 인코딩 할 때

캐릭터 인코딩 변환을 수행 할 때 호환되지 않는 문자가 발생할 수 있습니다. 현재 MB_SUBSTITUE_CHARACTER를 사용하여 변환 된 문자열이 차량 코드를 생성하지 않도록 할 수도 있습니다.

 <span><span><span class="hljs-comment">// 대체 문자 설정</span></span><span>
</span><span><span class="hljs-title function_ invoke__">mb_substitute_character</span></span><span>(</span><span><span class="hljs-string">'?'</span></span><span>);

</span><span><span class="hljs-comment">// 우리가 하나를 옮기고 싶다고 가정 해 봅시다UTF-8문자열을 변환하십시오GBK</span></span><span>
</span><span><span class="hljs-variable">$string</span></span><span> = </span><span><span class="hljs-string">"이것은 부분입니다UTF-8인코딩 된 문자열"</span></span><span>;
</span><span><span class="hljs-variable">$converted_string</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mb_convert_encoding</span></span><span>(</span><span><span class="hljs-variable">$string</span></span><span>, </span><span><span class="hljs-string">'GBK'</span></span><span>, </span><span><span class="hljs-string">'UTF-8'</span></span><span>);

</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$converted_string</span></span><span>;
</span></span>

변환 프로세스 중에 변환 할 수없는 문자가 발생하더라도 대체 문자를 설정하면 전체 변환 프로세스에 영향을 미치지 않습니다.

5. 요약

MB_SUBSTITUE_CHARACTER 는 현악기 자르기 및 문제를 효과적으로 피할 수있는 매우 실용적인 기능입니다. 다중 바이트 스트링 작업을 수행 할 때 MB_SUBSTITUE_CHARACTER를 사용하면 코드의 견고성을 향상시킬뿐만 아니라 불법 문자를 만나고 더 친근한 대체 문자를 출력 할 때 프로그램이 충돌하지 않도록합니다. 문자 가로 채기, 인코딩 변환 또는 문자 검색이든 MB_Substite_character 는 차량 코드 및 잘린 문제를 해결하는 데 중요한 도구입니다.