>  기사  >  백엔드 개발  >  PHP에서 문자열이 차지하는 바이트 수를 계산하는 방법

PHP에서 문자열이 차지하는 바이트 수를 계산하는 방법

青灯夜游
青灯夜游원래의
2022-08-31 20:23:548584검색

PHP에서는 strlen() 함수를 사용하여 문자열의 바이트 수를 계산할 수 있습니다. 이 함수는 문자열의 길이를 바이트 단위로 계산하고 문자열이 차지하는 문자 길이(바이트 수)를 계산할 수 있습니다. 구문은 "strlen(문자열)"입니다. 이 함수의 계산에서 영어 쉼표, 숫자, 영문자, 소수점 등은 1바이트만 차지하며, GB2312로 인코딩된 중국어 문자는 2바이트, UTF-8로 인코딩된 중국어 문자는 3바이트를 차지합니다.

PHP에서 문자열이 차지하는 바이트 수를 계산하는 방법

이 튜토리얼의 운영 환경: Windows 7 시스템, PHP 버전 8.1, DELL G3 컴퓨터

PHP에서 서로 다른 인코딩 형식의 문자가 차지하는 바이트는 다릅니다.

  • ANSI 인코딩 형식 다음 중국어 A

  • UTF-8 인코딩 형식에서는 문자가 2바이트, 영문자 하나가 1바이트를 차지하고, 한자가 3바이트, 영문자 하나가 1바이트를 차지합니다.

PHP에서는 strlen() 함수를 사용하여 문자열의 바이트 수를 계산할 수 있습니다.

strlen() 함수는 문자열 길이를 바이트 단위로 계산합니다.

strlen($string)

이 함수는 $string(계산할 문자열) 매개변수 하나만 허용하며, 이 매개변수에 전달된 값이 비어 있으면 0을 반환합니다.

strlen() 함수, (영어 모드에서) 쉼표, 숫자, 영문자, 소수점 ., 밑줄, 공백 등은 한 문자 길이(바이트)만 차지합니다. .、下划线、空格等都只占一个字符长度(字节)。

<?php
header("Content-type:text/html;charset=utf-8");
$str = "hello world!";
echo &#39;字符串 “&#39;.$str.&#39;” 占:&#39;.strlen($str).&#39; 个字节<br>&#39;;
?>

PHP에서 문자열이 차지하는 바이트 수를 계산하는 방법

分析:上例的字符串中,有10个英文字母,一个空格、一个英文感叹号;合计:12个个字节。

strlen()函数中,一个 GB2312 编码的汉字占两个字符长度(字节),一个 UTF-8 编码的汉字占三个字符长度(字节)。

<?php
header("Content-type:text/html;charset=utf-8");
$str = "!";
echo &#39;字符串 “&#39;.$str.&#39;” 占:&#39;.strlen($str).&#39; 个字节<br>&#39;;
?>

PHP에서 문자열이 차지하는 바이트 수를 계산하는 방법

上例中,"!"是中文感叹号,因此占三个字节。

<?php
header("Content-type:text/html;charset=utf-8");
$str = "欢迎";
echo &#39;字符串 “&#39;.$str.&#39;” 占:&#39;.strlen($str).&#39; 个字节<br>&#39;;
?>

PHP에서 문자열이 차지하는 바이트 수를 계산하는 방법

上例中,包含两个汉字,因此占6个字节。

<?php
header("Content-type:text/html;charset=utf-8");
$str = "hello,欢迎来到这里!";
echo &#39;字符串 “&#39;.$str.&#39;” 占:&#39;.strlen($str).&#39; 个字节<br>&#39;;
?>

PHP에서 문자열이 차지하는 바이트 수를 계산하는 방법

上例中,包含5个英文字符,6个汉字,一个中文感叹号和一个中文逗号;因此占5+(8*3)=29个字节。

说明:在计算字符串的字符个数时,strlen()函数只能处理英文字符串,对中文或中英混合字符串不友好。此时,就需要利用

mb_strlen()函数了,该函数可以按字符来计算字符串长度的。

扩展知识:mb_strlen() 函数

mb_strlen() 函数同样可以返回字符串的长度,语法格式如下:

mb_strlen($str [, $encoding = mb_internal_encoding()])
  • $str 为需要计算长度的字符串

  • $encoding 是可选参数,为字符编码,如果省略则使用内部字符编码。

mb_strlen() 函数的返回值为具有 $encoding 编码的字符串 $str 所包含的字符数,如果 $encoding 无效则返回 false。

注意:与 strlen() 函数不同,在 mb_strlen() 函数中,无论是汉字,还是英文、数字、小数点、下划线和空格,都只占一个字符长度。

【示例】 使用 mb_strlen() 函数获取字符串长度。

<?php
header("Content-type:text/html;charset=utf-8");
$str = "hello 你好!";
echo &#39;字符串 “&#39;.$str.&#39;” 的长度为:&#39;.mb_strlen($str,"utf-8").&#39;<br>&#39;;

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

PHP에서 문자열이 차지하는 바이트 수를 계산하는 방법

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

rrreee

PHP에서 문자열이 차지하는 바이트 수를 계산하는 방법 분석: 위 예시의 문자열에는 영문자 10자, 공백, 영문 느낌표가 포함되어 총 12바이트입니다.

🎜🎜🎜strlen() 함수에서 GB2312로 인코딩된 한자는 길이(바이트)에서 2문자를 차지하고, UTF-8로 인코딩된 한자는 길이(바이트)에서 3자를 차지합니다. 🎜🎜rrreee🎜PHP에서 문자열이 차지하는 바이트 수를 계산하는 방법🎜 🎜위 예시에서 "!"는 중국어 느낌표이므로 3바이트를 차지합니다. 🎜rrreee🎜PHP에서 문자열이 차지하는 바이트 수를 계산하는 방법🎜🎜 위의 예에서는 한자가 2개 포함되어 있으므로 6바이트를 차지합니다. 🎜rrreee🎜PHP에서 문자열이 차지하는 바이트 수를 계산하는 방법🎜🎜 위의 예에서는 영어 5자, 중국어 6자, 중국어 느낌표, 중국어 쉼표가 포함되어 있으므로 5+(8*3)=29바이트를 차지합니다. 🎜🎜🎜참고: 🎜문자열의 문자 수를 계산할 때 strlen() 함수는 영어 문자열만 처리할 수 있으며 중국어 또는 중국어와 영어 혼합 문자열에는 적합하지 않습니다. 이때 문자를 기준으로 문자열 길이를 계산할 수 있는 🎜

mb_strlen() 함수를 사용해야 합니다. 🎜

🎜확장 지식: mb_strlen() 함수 🎜🎜🎜mb_strlen() 함수는 문자열의 길이도 반환할 수 있으며 구문 형식은 다음과 같습니다. 🎜rrreee🎜🎜🎜 $str은 필수입니다. 문자열 길이를 계산합니다. 🎜🎜🎜🎜$encoding은 선택적 매개변수로, 문자 인코딩을 생략하면 내부 문자 인코딩이 사용됩니다. 🎜🎜🎜🎜mb_strlen() 함수의 반환 값은 $encoding 인코딩이 포함된 문자열 $str에 포함된 문자 수입니다. $encoding이 유효하지 않으면 false를 반환합니다. 🎜🎜🎜참고: strlen() 함수와 달리 mb_strlen() 함수에서는 한자, 영어, 숫자, 소수점, 밑줄, 공백 등 한 문자 길이만 차지합니다. 🎜🎜🎜[예제] mb_strlen() 함수를 사용하여 문자열 길이를 구합니다. 🎜rrreee🎜PHP에서 문자열이 차지하는 바이트 수를 계산하는 방법🎜🎜 해당 $encoding 매개변수를 설정하면 중국어 문자열의 길이 문제를 잘 처리할 수 있음을 알 수 있습니다. 🎜🎜추천 학습: "🎜PHP 비디오 튜토리얼🎜"🎜

위 내용은 PHP에서 문자열이 차지하는 바이트 수를 계산하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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