Heim > Artikel > Backend-Entwicklung > PHP-String, der lernt, wie die Länge chinesischer oder gemischter Zeichen zurückgegeben wird
Im vorherigen Artikel „So ersetzen Sie einen Teilstring einer bestimmten Länge durch ein *-Zeichen in PHP“ haben wir die String-Ersetzung vorgestellt, eine Methode zum Ersetzen eines Teilstrings einer bestimmten Länge durch ein *-Zeichen Zeichenfolgen verstehen, die Methode zur Berechnung der Länge chinesischer Zeichenfolgen oder die Länge gemischter chinesischer und englischer Zeichenfolgen einführen.
Wie berechnet man die Länge einer chinesischen Schnur? In Bezug auf dieses Problem besteht unsere erste Reaktion möglicherweise darin, die Funktion strlen() zu verwenden. Die Funktion strlen() eignet sich jedoch gut für die Verarbeitung vollständig englischer Zeichenfolgen, funktioniert jedoch nicht, wenn es um gemischte chinesische und englische Zeichenfolgen oder rein chinesische Zeichenfolgen geht . Schauen wir uns das folgende Beispiel an:
<?php header("Content-type:text/html;charset=utf-8"); //设置字符编码为utf-8 $str = "欢迎来到PHP中文网!"; echo '字符串 “'.$str.'” 的长度为:'.strlen($str).'<br>'; ?>
Das Ausgabeergebnis lautet:
Es ist ersichtlich, dass die Funktion strlen () aufgrund unterschiedlicher Regeln die Länge gemischter chinesischer und englischer oder rein chinesischer Zeichenfolgen nicht genau zurückgeben kann zur Verarbeitung von Zeichen. Warum wird also 27 zurückgegeben?
Das liegt daran, dass die von uns verwendete Zeichenkodierung utf-8 ist. Bei der UTF-8-Kodierung belegt ein chinesisches Zeichen drei Bytes.
strlen()-Funktion Im ASCII-Code belegt ein chinesisches Zeichen zwei Bytes in der UTF-8-Kodierung, ein chinesisches Zeichen (einschließlich traditionelles Chinesisch) entspricht drei Bytes; in der Unicode-Kodierung entspricht ein chinesisches Zeichen (einschließlich traditionelles Chinesisch) entspricht zwei Bytes.
Im obigen Beispiel enthält eine der Zeichenfolgen „Willkommen auf der chinesischen PHP-Website!
“ 8 chinesische Zeichen und 3 englische Zeichen, dann 8*3+3= 27
Bytes, die Stringlänge beträgt 27. 欢迎来到PHP中文网!
”中一个包含了8个中文字符,3个英文字符,则8*3+3=27
个字节,则字符串长度为27。
但这样的字符串长度不是我们想要的,那样如何处理中文字符,可以准确的计算出我们想要的中英文混合或纯中文字符串的长度呢?
PHP提供了一个函数来解决这个问题,那就是mb_strlen() 函数。
还是上个示例,这次使用mb_strlen() 函数来计算字符串长度:
<?php header("Content-type:text/html;charset=utf-8"); $str = "欢迎来到PHP中文网!"; echo '字符串 “'.$str.'” 的长度为:'.mb_strlen($str,'utf-8').'<br>'; ?>
输出结果为:
可以看出:字符串$str
中,中文+英文+感叹号,一个有11个字符,输出结果也为11。对了,找到对的人了~
mb_strlen() 函数中无论是汉字,还是英文、数字、小数点、下划线和空格,都只占一个字节。
下面我们来简单了解一下mb_strlen() 函数。
mb_strlen($string,$encoding)
函数可以通过设置字符编码从而返回对应的字符数;该函数接受一个必需参数$string(需要检测的字符串)和一个可省略的参数$encoding
(字符编码),如果省略则使用内部字符编码。
我们可以通过设置对应的$encoding
PHP bietet eine Funktion zur Lösung dieses Problems, nämlich die Funktion mb_strlen().
Wie im vorherigen Beispiel, diesmal mit der Funktion mb_strlen() zur Berechnung der Stringlänge:rrreeeDas Ausgabeergebnis ist:
$str
, Chinesisch + Englisch +Ausrufezeichen, eines hat 11 Zeichen und das Ausgabeergebnis ist ebenfalls 11. Übrigens habe ich die richtige Person gefunden~mb_strlen($string,$encoding)
kann die entsprechende Anzahl von Zeichen zurückgeben, indem die Zeichenkodierung festgelegt wird; diese Funktion akzeptiert einen erforderlichen Parameter $string (die Zeichenfolge, die erkannt werden muss) und einen weggelassener Parameter $encoding
(Zeichenkodierung), wenn weggelassen, wird die interne Zeichenkodierung verwendet. 🎜🎜Wir können das Längenproblem chinesischer Zeichenfolgen gut lösen, indem wir die entsprechenden $encoding
-Parameter festlegen. 🎜🎜Okay, das ist alles. Wenn Sie noch etwas wissen möchten, können Sie hier klicken. → →🎜php-Video-Tutorial🎜🎜🎜 Abschließend empfehle ich die Lektüre eines klassischen Kurses „🎜PHP String Processing (Jade Girl Heart Sutra Edition)🎜“, er ist kostenlos~ Kommen Sie und lernen Sie! 🎜Das obige ist der detaillierte Inhalt vonPHP-String, der lernt, wie die Länge chinesischer oder gemischter Zeichen zurückgegeben wird. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!