>  기사  >  백엔드 개발  >  한자 또는 혼합 문자의 길이를 반환하는 방법을 학습하는 PHP 문자열

한자 또는 혼합 문자의 길이를 반환하는 방법을 학습하는 PHP 문자열

青灯夜游
青灯夜游원래의
2021-08-09 17:28:502112검색

이전 글 "PHP에서 특정 길이의 하위 문자열을 * 기호로 바꾸는 방법"에서 특정 길이의 하위 문자열을 * 기호로 바꾸는 방법인 문자열 대체를 소개했습니다. 문자열을 이해하고 중국어 문자열의 길이를 계산하는 방법이나 중국어와 영어가 혼합된 문자열의 길이를 계산하는 방법을 소개합니다.

중국어 문자열의 길이를 어떻게 계산하나요? 이 문제에 대해 우리의 첫 번째 반응은 strlen() 함수를 사용하는 것일 수도 있는데, strlen() 함수는 전체 영어 문자열을 처리하는 데는 좋지만 중국어와 영어가 혼합된 문자열이나 순수 중국어 문자열의 경우에는 작동하지 않습니다. . 다음 예를 살펴보겠습니다.

<?php
header("Content-type:text/html;charset=utf-8");  //设置字符编码为utf-8
$str = "欢迎来到PHP中文网!";
echo &#39;字符串 “&#39;.$str.&#39;” 的长度为:&#39;.strlen($str).&#39;<br>&#39;;
?>

출력 결과는 다음과 같습니다.

한자 또는 혼합 문자의 길이를 반환하는 방법을 학습하는 PHP 문자열

strlen() 함수는 다른 규칙으로 인해 중국어와 영어가 혼합된 문자열 또는 순수 중국어 문자열의 길이를 정확하게 반환하지 못하는 것을 알 수 있습니다. 문자 처리를 위해. 그렇다면 왜 27을 반환합니까?

우리가 사용하는 문자 인코딩이 utf-8이기 때문입니다. UTF-8 인코딩에서는 한자가 3바이트를 차지합니다.

strlen() 함수 ASCII 코드에서 한자는 2바이트의 공간을 차지합니다. UTF-8 인코딩에서는 한자(번체 중국어 포함)가 유니코드 인코딩에서 3바이트와 같습니다. 중국어 번체)는 2바이트와 같습니다.

위의 예에서 "Welcome to PHP Chinese website!" 문자열 중 하나에 중국어 문자 8개와 영어 문자 3개가 포함되어 있으며, 그 다음에는 8*3+3= 27 bytes인 경우 문자열 길이는 27입니다. 欢迎来到PHP中文网!”中一个包含了8个中文字符,3个英文字符,则8*3+3=27个字节,则字符串长度为27。

但这样的字符串长度不是我们想要的,那样如何处理中文字符,可以准确的计算出我们想要的中英文混合或纯中文字符串的长度呢?

PHP提供了一个函数来解决这个问题,那就是mb_strlen() 函数

还是上个示例,这次使用mb_strlen() 函数来计算字符串长度:

<?php
header("Content-type:text/html;charset=utf-8");
$str = "欢迎来到PHP中文网!";
echo &#39;字符串 “&#39;.$str.&#39;” 的长度为:&#39;.mb_strlen($str,&#39;utf-8&#39;).&#39;<br>&#39;;
?>

输出结果为:

한자 또는 혼합 문자의 길이를 반환하는 방법을 학습하는 PHP 문자열

可以看出:字符串$str中,中文+英文+感叹号,一个有11个字符,输出结果也为11。对了,找到对的人了~

mb_strlen() 函数中无论是汉字,还是英文、数字、小数点、下划线和空格,都只占一个字节。

下面我们来简单了解一下mb_strlen() 函数。

mb_strlen($string,$encoding)函数可以通过设置字符编码从而返回对应的字符数;该函数接受一个必需参数$string(需要检测的字符串)和一个可省略的参数$encoding(字符编码),如果省略则使用内部字符编码。

我们可以通过设置对应的$encoding

그런데 이런 문자열 길이는 우리가 원하는 길이가 아닙니다. 한자를 어떻게 처리하고, 한자와 영어가 혼합된 길이나 우리가 원하는 순한자 문자열의 길이를 정확하게 계산할 수 있을까요?

PHP에서는 이 문제를 해결하기 위한 기능인 mb_strlen() 함수를 제공합니다.

이전 예와 동일합니다. 이번에는 mb_strlen() 함수를 사용하여 문자열 길이를 계산합니다.

rrreee출력 결과는 다음과 같습니다.

한자 또는 혼합 문자의 길이를 반환하는 방법을 학습하는 PHP 문자열🎜🎜볼 수 있는 내용: 문자열 $str, 중국어 + 영어 + 느낌표, 하나는 11자이고 출력 결과도 11입니다. 그런데 딱 맞는 사람을 찾았어요~
🎜🎜🎜mb_strlen() 함수는 한자, 영어, 숫자, 소수점, 밑줄, 공백 등 1바이트만 차지합니다. 🎜🎜🎜mb_strlen() 함수를 간단히 살펴보겠습니다. 🎜🎜mb_strlen($string,$encoding) 함수는 문자 인코딩을 설정하여 해당 문자 수를 반환할 수 있습니다. 이 함수는 필수 매개 변수 $string(감지해야 하는 문자열)과 생략됨 매개변수 $encoding(문자 인코딩), 생략되면 내부 문자 인코딩이 사용됩니다. 🎜🎜해당 $encoding 매개변수를 설정하면 중국어 문자열의 길이 문제를 잘 처리할 수 있습니다. 🎜🎜그렇습니다. 더 알고 싶다면 여기를 클릭하세요. → →🎜php 비디오 튜토리얼🎜🎜🎜마지막으로 클래식 강좌인 "🎜PHP 문자열 처리(옥소녀심경편)🎜"을 읽어보시길 추천합니다. 무료입니다~ 와서 배워보세요! 🎜

위 내용은 한자 또는 혼합 문자의 길이를 반환하는 방법을 학습하는 PHP 문자열의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.