mb_strcut 함수의 함수는 멀티 바이트 스트링에서 지정된 바이트 길이의 스트링 조각을 가로 채는 것입니다. MB_SUBSTR 과 유사하지만 차이점은 MB_STRCUT가 문자가 아닌 바이트 단위로 가로 채 었다는 것입니다.
<?php
$str = "이것은 테스트 문자열입니다";
echo mb_strcut($str, 0, 6, "UTF-8"); // 산출“이것은 a입니다”
?>
여기서 6은 바이트 수 (UTF-8 인코딩, 한자는 일반적으로 3 바이트를 차지 함)이므로 처음 두 중국어는 실제로 가로 채 웁니다.
특수 문자는 이모티콘, 특수 기호, 결합 된 문자 (예 : Diacritic 음표가있는 문자) 등을 나타낼 수 있습니다.
MB_STRCUT는 바이트 카운트에 따라 가로 채기 때문에 인터셉트 길이가 멀티 바이트 문자의 잘린 부분 인 경우 잘린 문자열에 멍청하거나 불완전한 문자가 나타납니다.
예:
<?php
$str = "Hello ?? World";
echo mb_strcut($str, 0, 8, "UTF-8"); // 可能산출“Hello ”발 뒤꿈치가 달성되었습니다
?>
다음은 4 바이트를 차지하는 이모티콘입니다. 차단 된 길이가 이모티콘 바이트의 중간에 떨어지면 문자가 차단되어 코드가 나옵니다.
PHP MB_Strcut 이므로 MBString 확장자는 4 바이트 문자를 더 잘 지원하지만 여전히 길이와 문자 경계를 가로 채기 위해주의를 기울여야합니다.
질문 | 설명 | 해결책 |
---|---|---|
문자 잘린 코드를 유발합니다 | 다중 바이트 문자를 같은 길이로 자르고 불완전한 문자열을 만듭니다. | 대신 mb_substr을 사용하여 문자별로 가로 채 웁니다 |
4 바이트 문자 처리 예외 | 4 바이트 이모티콘은 가로 채기에 불완전합니다 | PHP 버전을 업그레이드하고 4 바이트를 지원하는 MBString을 사용하십시오. |
바이트와 캐릭터 길이 혼란 | MB_STRCUT 는 바이트에 의해 가로 채며 MB_SUBSTR 은 문자로 가로 채며 혼합 될 때 실수를 쉽게 수행 할 수 있습니다. | 요구 사항을 명확히하고 해당 기능을 선택하십시오 |
문자 인코딩은 일관성이 없습니다 | 들어오는 인코딩은 문자열의 실제 인코딩과 일치하지 않으므로 차단 예외가 발생합니다. | 문자열 인코딩을 확인하고 올바르게 전달하십시오 |
MB_SUBSTR 은 문자로 가로 채고 있으며, 다중 바이트 캐릭터의 절반을 자르지 않으면 서 으르렁 거리는 코드를 피합니다.
<?php
$str = "Hello ?? World";
echo mb_substr($str, 0, 7, "UTF-8"); // 산출“Hello ??”
?>
MB_Strcut를 사용해야하는 경우 가로 채기 지점이 완전한 문자 경계인지 여부를 수동으로 감지하거나 MB_STRLEN을 사용하여 문자 수를 얻은 다음 해당 바이트 수를 계산하는 것이 좋습니다.
MB_STRCUT 는 다중 바이트 문자열을 다룰 때 강력한 도구이지만 바이트에 의해 가로 채기 때문에 특수 문자 (특히 4 바이트 이모티콘)를 만나면 차량 또는 잘린 예외를 생성 할 수 있습니다. 바이트와 문자의 차이점을 이해하고 MB_Strcut 또는 MB_Substr를 합리적으로 선택하고 문자 인코딩이 일관되도록하는 것이 문제를 피하는 데 핵심입니다.