Heim  >  Artikel  >  Backend-Entwicklung  >  Stellen Sie kurz den Unterschied zwischen strlen und mb_strlen in PHP vor

Stellen Sie kurz den Unterschied zwischen strlen und mb_strlen in PHP vor

怪我咯
怪我咯Original
2017-07-04 13:39:171333Durchsuche

Allgemeine Funktionen zur Berechnung der Länge von String in PHP sind: strlen und mb_strlen. Wenn es sich bei den Zeichen ausschließlich um englische Zeichen handelt, sind die beiden gleich. Hier vergleichen wir hauptsächlich die beiden Berechnungsergebnisse, wenn Chinesisch und Englisch gemischt werden.

In PHP sind strlen und mb_strlen Funktionen zum Ermitteln der Länge eines Strings, aber einigen Anfängern ist der Unterschied möglicherweise nicht klar, ohne das Handbuch zu lesen.
Im Folgenden wird anhand von Beispielen der Unterschied zwischen den beiden erläutert.

Sehen 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 
?>

Ergebnisanalyse: Bei der Berechnung von strlen wird ein chinesisches UTF8-Zeichen als 3 Längen behandelt, sodass die Länge von „Chinesisches 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 mit einer Länge von 1 berechnet, sodass die Länge von „Chinesisches Zeichen 1“ 6 beträgt.

Verwendung Diese beiden Funktionen können gemeinsam die Belegung einer gemischten chinesischen und englischen Zeichenfolge berechnen (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;

Zum Beispiel , „Chinesisches Zeichen a“ 1 Zeichen“ strlen($str)-Wert ist 14, mb_strlen($str)-Wert ist 6, dann kann berechnet werden, dass der Platzhalter von „Chinesisches Zeichen a 1 Zeichen“ 10 ist.

echo mb_internal_encoding();

PHP integriert Die String-Längenfunktion strlen kann chinesische Strings nicht korrekt verarbeiten, 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 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 verwenden, müssen Sie sicherstellen, dass php_mbstring.dll in php.ini geladen ist. Stellen Sie sicher, dass „extension=php_mbstring.dll“ eine Zeile existiert und nicht kommentiert ist, sonst tritt ein undefiniertes Funktionsproblem auf.

Das obige ist der detaillierte Inhalt vonStellen Sie kurz den Unterschied zwischen strlen und mb_strlen in PHP vor. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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