PHP substr 함수가 문자가 깨져 있는 한자를 가로채는 이유는 substr 함수가 UTF-8 한자를 3바이트로 처리하기 때문입니다. 문자 깨짐을 해결하는 방법은 대신 mb_strlen 및 mb_substr 함수를 사용하는 것입니다.
이 기사의 운영 환경: Windows 7 시스템, PHP7.1, Dell G3 컴퓨터.
php substr 함수가 중국어 왜곡 문자를 가로채면 어떻게 해야 하나요?
PHP에서 substr을 사용하여 중국어 문자를 가로채는 솔루션
Substr은 종종 PHP에서 문자열을 가로채는 데 사용되지만, 이를 사용하여 중국어 문자를 가로채는 경우 문자가 깨져 발생합니다. 예:
<?php $mystring="今天天气真好"; $mysubstring=substr($mystring,0,2); echo $mysubstring; ?>
출력 결과는 �;
원인 분석: substr 함수의 프로토타입은 string substr ( string $string , int $start [, int $length ] )입니다. 여기서 $length는 반환된 바이트 길이를 나타내고 한자가 2개를 차지합니다. 바이트, UTF-8 중국어 문자의 경우 3바이트로 처리됩니다.
<?php $length=strlen($mystring);echo $length;//输出结果为18 ?>
즉, $length를 3으로 설정하면 "Jin"이라는 단어가 성공적으로 반환됩니다. 이 경우 중국어와 영어가 섞여 있다면 $length를 주의 깊게 계산해야 합니다.
그렇다면 더 나은 해결책이 있을까요? Php는 추가 기능 mb_strlen 및 mb_substr
<?php $length=mb_strlen($mystring); $mysub=mb_substr($mystring,0,4); echo "the length is:$length,","the substr is:$mysub"; ?>
을 제공합니다. 출력 결과는 다음과 같습니다. 길이는 6, substr은 오늘의 날씨
mb_strlen 함수의 프로토타입은 int mb_strlen(string string_input, string encode 기본값은 UTF-입니다. 8, UTF-8로 인코딩된 중국어 문자를 하나로 계산합니다
참고: mb_strlen 및 mb_substr은 PHP의 핵심 기능이 아닙니다. 사용하기 전에 php.ini에서 확장=php_mbstring.dll을 열어야 합니다
권장 사항: "PHP 비디오 튜토리얼"
위 내용은 php substr 함수가 중국어 왜곡 문자를 가로채면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!