Maison >développement back-end >Problème PHP >Comment calculer le nombre d'octets qu'une chaîne occupe en php

Comment calculer le nombre d'octets qu'une chaîne occupe en php

青灯夜游
青灯夜游original
2022-08-31 20:23:548746parcourir

En PHP, vous pouvez utiliser la fonction strlen() pour calculer le nombre d'octets dans une chaîne. Cette fonction calcule la longueur d'une chaîne en octets et peut compter la longueur des caractères (nombre d'octets) occupés par la chaîne. La syntaxe est "strlen (string)". Dans le calcul de cette fonction, les virgules anglaises, les chiffres, les lettres anglaises, les points décimaux, etc. n'occupent qu'un octet tandis qu'un caractère chinois codé en GB2312 occupe deux octets et un caractère chinois codé en UTF-8 occupe trois octets.

Comment calculer le nombre d'octets qu'une chaîne occupe en php

L'environnement d'exploitation de ce tutoriel : Système Windows 7, PHP version 8.1, ordinateur DELL G3

Les octets occupés par les caractères dans les différents formats d'encodage en php sont différents :

  • Format d'encodage ANSI Suivant Chinois A le caractère occupe 2 octets et un caractère anglais occupe 1 octet ; au format d'encodage

  • UTF-8, un caractère chinois occupe 3 octets et un caractère anglais occupe 1 octet.

En PHP, vous pouvez utiliser la fonction strlen() pour calculer le nombre d'octets dans une chaîne. La fonction

strlen() calcule la longueur de la chaîne en octets.

strlen($string)

Cette fonction n'accepte qu'un seul paramètre $string (la chaîne à calculer), et renvoie 0 si la valeur passée dans ce paramètre est vide.

fonction strlen(), (en mode anglais) les virgules, les chiffres, les lettres anglaises, les points décimaux ., les traits de soulignement, les espaces, etc. n'occupent qu'une seule longueur de caractère (octet). .、下划线、空格等都只占一个字符长度(字节)。

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

Comment calculer le nombre doctets quune chaîne occupe en 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;;
?>

Comment calculer le nombre doctets quune chaîne occupe en php

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

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

Comment calculer le nombre doctets quune chaîne occupe en php

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

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

Comment calculer le nombre doctets quune chaîne occupe en 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;;
?>

Comment calculer le nombre doctets quune chaîne occupe en php

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

rrreee

Comment calculer le nombre doctets quune chaîne occupe en php Analyse : dans la chaîne de l'exemple ci-dessus, il y a 10 lettres anglaises, un espace et un point d'exclamation anglais au total : 12 octets.

🎜🎜🎜strlen(), un caractère chinois codé GB2312 occupe deux caractères de longueur (octets) et un caractère chinois codé UTF-8 occupe trois caractères de longueur (octets). 🎜🎜rrreee🎜Comment calculer le nombre doctets quune chaîne occupe en php🎜 🎜Dans l'exemple ci-dessus, "!" est un point d'exclamation chinois, il occupe donc trois octets. 🎜rrreee🎜Comment calculer le nombre doctets quune chaîne occupe en php🎜🎜 Dans l’exemple ci-dessus, il contient deux caractères chinois, il occupe donc 6 octets. 🎜rrreee🎜Comment calculer le nombre doctets quune chaîne occupe en php🎜🎜 Dans l'exemple ci-dessus, il contient 5 caractères anglais, 6 caractères chinois, un point d'exclamation chinois et une virgule chinoise ; il occupe donc 5+(8*3)=29 octets ; 🎜🎜🎜Remarque : 🎜Lors du calcul du nombre de caractères dans une chaîne, la fonction strlen() ne peut traiter que les chaînes anglaises et n'est pas compatible avec les chaînes chinoises ou mixtes chinoises et anglaises. À ce stade, vous devez utiliser la fonction 🎜

mb_strlen(), qui peut calculer la longueur de la chaîne en fonction des caractères. 🎜

🎜Connaissances approfondies : fonction mb_strlen() 🎜🎜🎜La fonction mb_strlen() peut également renvoyer la longueur de la chaîne, le format de syntaxe est le suivant : 🎜rrreee🎜🎜🎜 $str est obligatoire Calculez la longueur de la chaîne 🎜🎜🎜🎜$encoding est un paramètre facultatif, qui est le codage des caractères. S'il est omis, le codage des caractères interne est utilisé. La valeur de retour de la fonction 🎜🎜🎜🎜mb_strlen() est le nombre de caractères contenus dans la chaîne $str avec l'encodage $encoding Si $encoding n'est pas valide, elle renvoie false. 🎜🎜🎜Remarque : contrairement à la fonction strlen(), dans la fonction mb_strlen(), qu'il s'agisse de caractères chinois, d'anglais, de chiffres, de points décimaux, de traits de soulignement et d'espaces, ils n'occupent qu'un seul caractère en longueur. 🎜🎜🎜[Exemple] Utilisez la fonction mb_strlen() pour obtenir la longueur de la chaîne. 🎜rrreee🎜Comment calculer le nombre doctets quune chaîne occupe en php🎜🎜 On peut voir que nous pouvons bien gérer le problème de longueur des chaînes chinoises en définissant les paramètres $encoding correspondants. 🎜🎜Apprentissage recommandé : "🎜Tutoriel vidéo PHP🎜"🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn