strlen과 mb_strlen 비교
문자가 모두 영문자일 경우 동일합니다. 여기서는 주로 중국어와 영어가 혼합된 경우의 두 가지 계산 결과를 비교합니다. (테스트시 인코딩 방식은 UTF8 입니다.)
코드 복사 코드는 다음과 같습니다.
$str= '한자 1자';
echo strlen($str)
echo '
'
echo mb_strlen($str,'UTF8'); 🎜>// 출력 결과
//14
//6
?>
결과 분석: strlen 계산 시 UTF8 한자는 3가지 길이로 처리되며, so " "한자 1자"의 길이는 3*4 2=14
mb_strlen 계산시 내부 코드를 UTF8로 선택하면 한자의 길이가 1로 계산되므로 " 중국어 a 문자 1 문자" 길이는 6입니다.
중국어와 영어가 혼합된 문자열의 자리 표시자 계산에 대해:
이 두 함수를 사용하면 중국어와 영어가 혼합된 문자열의 자리 표시자(문자의 자리 표시자)를 공동으로 계산할 수 있습니다. 한자는 2, 영문자는 1), 계산방법은 다음과 같습니다. 혼합문자열에 한자와 b 영문자가 있을 경우 자리표시자는
코드복사입니다. 코드는 다음과 같습니다.
$str='한자 1문자'
//계산은 다음과 같습니다
echo (strlen($str) mb_strlen($str,'UTF8')) / 2;
echo
//결과 출력
//10
?> >예를 들어 "중국어 a 문자"의 strlen($str) 값은 14이고, mb_strlen($str) 값은 6입니다. "한자 a 문자 1 문자"의 자리 표시자는 다음과 같이 계산할 수 있습니다. 10.
첨부된 홈페이지 기사:
중국어에 대한 질문이 남아있습니다. PHP에 내장된 문자열 길이 함수 strlen은 중국어 문자열을 올바르게 처리할 수 없습니다. 이 함수는 문자열이 차지하는 바이트 수만 가져옵니다. GB2312 중국어 인코딩의 경우 strlen으로 얻은 값은 중국어 문자 수의 2배인 반면, UTF-8 인코딩 중국어의 경우 차이는 3배입니다(UTF-8 인코딩에서는 한자 하나가 3바이트를 차지합니다).
mb_strlen 함수를 사용하면 이 문제를 더 잘 해결할 수 있습니다. mb_strlen의 사용법은 문자 인코딩을 지정하는 두 번째 선택적 매개변수가 있다는 점을 제외하면 strlen과 유사합니다. 예를 들어, UTF-8 문자열 $str의 길이를 얻으려면 mb_strlen($str,'UTF-8')을 사용할 수 있습니다. 두 번째 매개변수가 생략되면 PHP의 내부 인코딩이 사용됩니다. 내부 인코딩은 mb_internal_encoding() 함수를 통해 얻을 수 있습니다. mb_strlen은 PHP의 핵심 기능이 아니라는 점에 유의해야 합니다. 이를 사용하기 전에 php_mbstring.dll이 php.ini에 로드되어 있는지 확인해야 합니다. 즉, "extension=php_mbstring.dll" 줄이 존재하는지 확인해야 합니다. 주석 처리되지 않습니다. 그렇지 않으면 정의되지 않은 함수 문제가 됩니다.
위에서는 strlen의 내용을 포함하여 중국어와 영어가 혼합된 문자열의 길이를 계산하는 strlen php strlen mb_strlen을 소개했습니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되길 바랍니다.