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.
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 '字符串 “'.$str.'” 占:'.strlen($str).' 个字节<br>'; ?>
分析:上例的字符串中,有10个英文字母,一个空格、一个英文感叹号;合计:12个个字节。
strlen()函数中,一个 GB2312 编码的汉字占两个字符长度(字节),一个 UTF-8 编码的汉字占三个字符长度(字节)。
<?php header("Content-type:text/html;charset=utf-8"); $str = "!"; echo '字符串 “'.$str.'” 占:'.strlen($str).' 个字节<br>'; ?>
上例中,"!"是中文感叹号,因此占三个字节。
<?php header("Content-type:text/html;charset=utf-8"); $str = "欢迎"; echo '字符串 “'.$str.'” 占:'.strlen($str).' 个字节<br>'; ?>
上例中,包含两个汉字,因此占6个字节。
<?php header("Content-type:text/html;charset=utf-8"); $str = "hello,欢迎来到这里!"; echo '字符串 “'.$str.'” 占:'.strlen($str).' 个字节<br>'; ?>
上例中,包含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 '字符串 “'.$str.'” 的长度为:'.mb_strlen($str,"utf-8").'<br>'; $str = "欢迎来到PHP中文网!"; echo '<br>字符串 “'.$str.'” 的长度为:'.mb_strlen($str,'utf-8').'<br>'; ?>
可以看出,我们可以通过设置对应的$encoding
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🎜🎜 🎜Dans l'exemple ci-dessus, "!" est un point d'exclamation chinois, il occupe donc trois octets. 🎜rrreee🎜🎜🎜 Dans l’exemple ci-dessus, il contient deux caractères chinois, il occupe donc 6 octets. 🎜rrreee🎜🎜🎜 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🎜🎜🎜 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!