Heim > Backend-Entwicklung > PHP-Tutorial > Sprechen Sie über den Unterschied zwischen strlen und mb_strlen in PHP

Sprechen Sie über den Unterschied zwischen strlen und mb_strlen in PHP

青灯夜游
Freigeben: 2023-04-08 14:20:01
Original
2376 Leute haben es durchsucht

Sprechen Sie über den Unterschied zwischen strlen und mb_strlen in PHP

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=&#39;中文a字1符&#39;;  
echo strlen($str).&#39;<br>&#39;;//14  
echo mb_strlen($str,&#39;utf8&#39;).&#39;<br>&#39;;//6  
echo mb_strlen($str,&#39;gbk&#39;).&#39;<br>&#39;;//8  
echo mb_strlen($str,&#39;gb2312&#39;).&#39;<br>&#39;;//10  
?>
Nach dem Login kopieren

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,&#39;UTF8&#39;)) / 2;
Nach dem Login kopieren

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();
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage