In PHP sind strlen und mb_strlen Funktionen zum Ermitteln der Länge eines Strings, aber für einige Anfänger ist der Unterschied möglicherweise nicht klar, wenn sie das Handbuch nicht lesen . Der Unterschied zwischen den beiden wird im Folgenden anhand von Beispielen erläutert.
Schauen Sie sich zuerst das Beispiel an:
<?php //测试时文件的编码方式要是UTF8 $str='中文a字1符'; echo strlen($str).'<br>';//14 echo mb_strlen($str,'utf8').'<br>';//6 echo mb_strlen($str,'gbk').'<br>';//8 echo mb_strlen($str,'gb2312').'<br>';//10 ?>
Ergebnisanalyse: Bei der Berechnung von strlen wird ein chinesisches UTF8-Zeichen als 3 Längen behandelt, sodass die Länge von „Chinesisches a-Zeichen 1 Zeichen“ 3* beträgt 4+ 2=14. Wenn bei der Berechnung von mb_strlen der interne Code UTF8 ausgewählt ist, wird ein chinesisches Zeichen mit einer Länge von 1 berechnet, sodass die Länge von „Chinesisches Zeichen 1“ 6 beträgt.
Mit diesen beiden Funktionen kann die Belegung einer gemischten chinesischen und englischen Zeichenfolge gemeinsam berechnet werden (die Belegung eines chinesischen Zeichens beträgt 2 und die Belegung eines englischen Zeichens beträgt 1)
echo (strlen($str) + mb_strlen($str,'UTF8')) / 2;
Zum Beispiel „ „Chinesisch ein Zeichen 1 Zeichen“ Der Wert von strlen($str) ist 14 und der Wert von mb_strlen($str) ist 6. Dann kann berechnet werden, dass der Platzhalter von „Chinesisch ein Zeichen 1 Zeichen“ 10 ist.
echo mb_internal_encoding();
Die in PHP integrierte String-Längenfunktion strlen verarbeitet chinesische Strings nicht korrekt, sie erhält lediglich die Anzahl der von dem String belegten Bytes. Bei der GB2312-Codierung für Chinesisch beträgt der von strlen erhaltene Wert das Doppelte der Anzahl chinesischer Zeichen, während für UTF-8-codiertes Chinesisch der Unterschied dreimal beträgt (bei UTF-8-Codierung belegt ein chinesisches Zeichen 3 Bytes).
Die Verwendung der Funktion mb_strlen kann dieses Problem besser lösen. Die Verwendung von mb_strlen ähnelt strlen, außer dass es einen zweiten optionalen Parameter zur Angabe der Zeichenkodierung gibt. Um beispielsweise die Länge der UTF-8-Zeichenfolge $str zu ermitteln, können Sie mb_strlen($str,'UTF-8') verwenden. Wenn der zweite Parameter weggelassen wird, wird die interne Kodierung von PHP verwendet. Die interne Kodierung kann über die Funktion mb_internal_encoding() abgerufen werden.
Es ist zu beachten, dass mb_strlen keine Kernfunktion von PHP ist. Bevor Sie es verwenden, müssen Sie sicherstellen, dass php_mbstring.dll in php.ini geladen ist, d. h. sicherstellen, dass die Zeile „extension =php_mbstring.dll" existiert und ist nicht auskommentiert. Andernfalls tritt das Problem einer undefinierten Funktion auf.
Empfohlenes Lernen: PHP-Video-Tutorial
Das obige ist der detaillierte Inhalt vonSprechen Sie über den Unterschied zwischen strlen und mb_strlen in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!