Heim  >  Artikel  >  Backend-Entwicklung  >  php strlen mb_strlen berechnet die Länge gemischter chinesischer und englischer Zeichenfolgen

php strlen mb_strlen berechnet die Länge gemischter chinesischer und englischer Zeichenfolgen

高洛峰
高洛峰Original
2017-01-05 11:41:521272Durchsuche

Vergleichen Sie strlen und mb_strlen
Wenn es sich bei allen Zeichen um englische Zeichen handelt, sind die beiden gleich. Hier vergleichen wir hauptsächlich die beiden Berechnungsergebnisse, wenn Chinesisch und Englisch gemischt werden. (Die Kodierungsmethode während des Tests war UTF8)

<?php 
$str=‘中文a字1符‘; 
echo strlen($str); 
echo ‘<br />‘; 
echo mb_strlen($str,‘UTF8‘); 
//输出结果 
//14 
//6 
?>

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“ 3* beträgt 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 Zeichen“ 6 beträgt
Ungefähr Berechnung des Platzhalters für Zeichenfolgen mit gemischter chinesischer und englischer Anordnung:
Mit diesen beiden Funktionen können Sie den Platzhalter einer gemischten chinesischen und englischen Zeichenfolge gemeinsam berechnen (der Platzhalter für ein chinesisches Zeichen ist 2 und der Platzhalter für ein englisches Zeichen ist 1). . Die berechnete Methode lautet: Wenn eine gemischte Zeichenfolge ein chinesisches Zeichen und ein englisches Zeichen enthält, lautet der Platzhalter:

<?php 
$str=‘中文a字1符‘; 
//计算如下 
echo (strlen($str) + mb_strlen($str,‘UTF8‘)) / 2; 
echo 
//输出结果 
//10 
?>

Beispielsweise ist der strlen-Wert ($str) von „Chinesisches Zeichen ein 1-Zeichen“. " ist 14, der Wert von mb_strlen ($str) ist 6, dann kann berechnet werden, dass die Belegung von "Chinesisch ein Zeichen 1 Zeichen" 10 beträgt.
Im Anhang finden Sie einen Artikel auf der Website:
Es ist immer noch ein Frage zu Chinesisch. Die in PHP integrierte String-Längenfunktion strlen kann chinesische Strings nicht korrekt verarbeiten. Sie ermittelt nur 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, d. h., dass die Zeile „extension=php_mbstring.dll“ vorhanden ist und ist nicht auskommentiert, sonst liegt ein undefiniertes Funktionsproblem vor.

Weitere Artikel zur Berechnung der Länge gemischter chinesischer und englischer Zeichenfolgen mit PHP strlen mb_strlen finden Sie auf der chinesischen PHP-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