찾다
백엔드 개발PHP 문제PHP에서 strlen과 mb_strlen의 차이점

PHP에서 문자열 길이를 계산하는 일반적인 함수는 strlen과 mb_strlen입니다. 문자가 모두 영어 문자인 경우 둘은 동일합니다. 여기서는 주로 중국어와 영어가 혼합된 경우의 두 가지 계산 결과를 비교합니다.

PHP에서 strlen, mb_strlen은 문자열의 길이를 구하는 함수인데, 일부 초보자의 경우 매뉴얼을 읽지 않으면 차이점을 잘 모를 수도 있습니다.

다음은 둘 사이의 차이점을 보여주는 예입니다.

예제를 먼저 살펴보겠습니다:

<?php  
//测试时文件的编码方式为gbk
$str=&#39;中文a字1符&#39;;  
echo strlen($str).&#39;<br>&#39;;//10 
echo mb_strlen($str,&#39;utf8&#39;).&#39;<br>&#39;;//7  
echo mb_strlen($str,&#39;gbk&#39;).&#39;<br>&#39;;//6  
echo mb_strlen($str,&#39;gb2312&#39;).&#39;<br>&#39;;//6 
echo mb_strlen($str).&#39;<br>&#39;;//10
?>

결과 분석:

strlen을 계산할 때 gbk로 처리하는 한자는 2길이이므로 " "한자 1자"의 길이는 2*4+2=10입니다. mb_strlen 계산시 내부코드가 gbk일 경우 한자는 한자 길이로 처리됩니다.

이 두 함수를 이용하면 한자와 영문이 혼합된 문자열의 점유율을 공동으로 계산할 수 있습니다(한자의 점유율은 2, 영문자의 점유율은 1)

echo (strlen($str) + mb_strlen($str,&#39;UTF8&#39;)) / 2;

예를 들어 "한자 1자"의 strlen($str) 값이 10이고, mb_strlen($str) 값이 6이면 "한자 한자"의 자리 표시자는 다음과 같이 계산할 수 있습니다. 1 문자"는 10입니다.#🎜 🎜#

echo mb_internal_encoding();

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"이 존재하지만 사용되지 않았습니다. 주석 처리하지 않으면 정의되지 않은 함수 문제가 발생합니다.

위 내용은 PHP에서 strlen과 mb_strlen의 차이점의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
이 기사는 segmentfault에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 영어 버전

SublimeText3 영어 버전

권장 사항: Win 버전, 코드 프롬프트 지원!

mPDF

mPDF

mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

에디트플러스 중국어 크랙 버전

에디트플러스 중국어 크랙 버전

작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.