Heim > Backend-Entwicklung > PHP-Tutorial > Beschreiben Sie den Unterschied zwischen strlen und mb_strlen in PHP

Beschreiben Sie den Unterschied zwischen strlen und mb_strlen in PHP

巴扎黑
Freigeben: 2016-11-12 14:56:58
Original
1223 Leute haben es durchsucht

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.
Im Folgenden wird anhand von Beispielen der Unterschied zwischen den beiden erläutert.

Sehen Sie sich zuerst das Beispiel an:

PHP-Code

<?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, also „Chinesisch a " Die Länge von „Zeichen 1 Zeichen“ beträgt 3*4 2=14. Wenn bei der Berechnung von mb_strlen der interne Code als UTF8 ausgewählt ist, wird ein chinesisches Zeichen als Länge 1 berechnet, also die Länge von „Chinesisches Zeichen 1“. Zeichen“ ist 6.

Mit diesen beiden Funktionen können Sie die Belegung einer gemischten chinesischen und englischen Zeichenfolge gemeinsam berechnen (die Belegung eines chinesischen Zeichens beträgt 2 und die Belegung eines englischen Zeichens beträgt 1)

PHP-Code

echo (strlen($str) + mb_strlen($str,&#39;UTF8&#39;)) / 2;
Nach dem Login kopieren

Zum Beispiel ist der strlen($str)-Wert von „Chinesisch ein Zeichen 1 Zeichen“ 14 und der mb_strlen($str)-Wert ist 6, dann ist der Der Anteil von „Chinesisch ein Zeichen 1 Zeichen“ kann berechnet werden. Das Bit ist 10.

PHP-Code

echo mb_internal_encoding();
Nach dem Login kopieren

Die in PHP integrierte Zeichenfolgenlängenfunktion strlen kann chinesische Zeichenfolgen nicht korrekt verarbeiten. Sie ermittelt nur die Anzahl der von der Zeichenfolge 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).

Mit der Funktion mb_strlen kann dieses Problem besser gelöst werden. Die Verwendung von mb_strlen ähnelt strlen, außer dass es einen zweiten optionalen Parameter zur Angabe der Zeichenkodierung hat. 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 unter Windows 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 wurde nicht verwendet, da sonst undefinierte Funktionsprobleme auftreten.

Diese Erweiterung muss unter Linux kompiliert werden.


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