Heim  >  Artikel  >  Backend-Entwicklung  >  So ermitteln Sie, wie viele chinesische Zeichen eine Zeichenfolge in PHP enthält

So ermitteln Sie, wie viele chinesische Zeichen eine Zeichenfolge in PHP enthält

青灯夜游
青灯夜游Original
2022-09-22 18:55:543685Durchsuche

Erkennungsschritte: 1. Verwenden Sie die Funktion preg_replace() mit regulären Ausdrücken, um die Zeichenfolge zu filtern und nicht-chinesische Buchstaben in der Zeichenfolge zu entfernen. Die Syntax lautet „preg_replace(“/[^x{4E00}-x{9FFF}]. +/u ,'', original string)“ gibt einen String zurück, der alle chinesischen Buchstaben enthält. 2. Verwenden Sie die Funktion mb_strlen(), um die Länge des Filterstrings (Anzahl der chinesischen Zeichen) zu berechnen. Die Syntax „mb_strlen(filter Zeichenfolge „utf-8“)“.

So ermitteln Sie, wie viele chinesische Zeichen eine Zeichenfolge in PHP enthält

Die Betriebsumgebung dieses Tutorials: Windows 7-System, PHP-Version 8.1, DELL G3-Computer

In PHP können Sie die Funktionen preg_replace() und mb_strlen() verwenden, um zu erkennen, wie viele chinesische Zeichen eine Zeichenfolge enthält enthält.

Implementierungsschritte:

Schritt 1: Verwenden Sie die Funktion preg_replace() mit regulären Ausdrücken, um Zeichenfolgen zu filtern und nicht-chinesische Buchstaben in den Zeichenfolgen zu entfernen.

Löschprinzip von preg_replace(): Verwenden Sie reguläre Ausdrücke für die Suche Fügen Sie nicht-chinesische Buchstaben in die Zeichenfolge ein und ersetzen Sie sie durch das Nullzeichen ''.

<?php
header("Content-type:text/html;charset=utf-8");
$str = "欢迎4546来到php这里。zblog,我的?#$%^天呀&())*(&^";
echo "原字符串:";
var_dump($str);
$pattern = "/[^\x{4E00}-\x{9FFF}]+/u";
echo "过滤字符串后:";
$newStr=preg_replace($pattern,&#39;&#39;, $str);
var_dump($newStr);
?>

gibt eine Zeichenfolge zurück, die alle chinesischen Buchstaben enthält

So ermitteln Sie, wie viele chinesische Zeichen eine Zeichenfolge in PHP enthält

Schritt 2: Verwenden Sie die Funktion mb_strlen(), um die Länge der gefilterten Zeichenfolge (die Anzahl der chinesischen Zeichen) zu berechnen :

So ermitteln Sie, wie viele chinesische Zeichen eine Zeichenfolge in PHP enthältpreg_replace(): Die Funktion

preg_replace() kann die Suche und Ersetzung regulärer Ausdrücke durchführen. Das Syntaxformat dieser Funktion ist wie folgt:

$len=mb_strlen($newStr,"utf-8");
echo "中文字符的个数:".$len;

Die Parameterbeschreibung lautet wie folgt:

$pattern: Das zu durchsuchende Muster, das eine Zeichenfolge oder ein Array von Zeichenfolgen sein kann;

$replacement: Die Zeichenfolge oder das Array von Zeichenfolgen, die zum Ersetzen verwendet werden. Wenn dieses Argument ein String und $pattern ein Array ist, werden alle Muster durch diesen String ersetzt. Wenn $pattern und $replacement beide Arrays sind, wird jedes $pattern durch das entsprechende Element in $replacement ersetzt. Wenn $replacement weniger Elemente enthält als $pattern, wird das zusätzliche $pattern durch die leere Zeichenfolge ersetzt.

$subject: Der zu durchsuchende und zu ersetzende String oder String-Array. Wenn $subject ein Array ist, wird die Suche und Ersetzung für jedes Element von $subject durchgeführt, und der Rückgabewert ist ebenfalls ein Array.

    $limit: Optionaler Parameter, die maximale Anzahl von Ersetzungen pro Muster für jedes $subject. Der Standardwert ist -1 (unendlich).
  • $count: optionaler Parameter, falls angegeben, wird mit der Anzahl der abgeschlossenen Ersetzungen gefüllt.
  • Wenn $subject ein Array ist, gibt die Funktion preg_replace() ein Array zurück, andernfalls gibt sie einen String zurück.
  • Wenn die Funktion preg_replace() eine Übereinstimmung findet, gibt sie das ersetzte $subject zurück, ansonsten das unveränderte $subject. Jeder Parameter der Funktion preg_replace() (außer dem Parameter $limit) kann ein Array sein. Wenn der Parameter $pattern und der Parameter $replacement beide Arrays sind, verarbeitet die Funktion die Schlüssel in der Reihenfolge, in der sie im Array erscheinen. Tritt ein Fehler auf, wird NULL zurückgegeben.
  • Der Parameter $replacement kann Rückverweise \n oder $n enthalten, letzteres wird syntaktisch bevorzugt. Jeder dieser Verweise wird durch den Text ersetzt, der von der n-ten übereinstimmenden Erfassungsuntergruppe erfasst wurde. n kann zwischen 0 und 99 liegen, wobei \0 und $0 den vollständigen Mustervergleichstext darstellen.
Die Methode zur Zählung der Seriennummern zum Erfassen von Untergruppen lautet: Die linke Klammer, die die erfassende Untergruppe darstellt, wird von links nach rechts beginnend bei 1 gezählt. Wenn Sie Backslashes in $replacement verwenden möchten, müssen Sie 4 ("\\" verwenden, da dies zuerst ein PHP-String ist, dann zwei nach dem Escapezeichen und dann als Originaltext betrachtet wird, nachdem er den Backslash der regulären Ausdrucks-Engine durchlaufen hat).

Wenn Sie im Ersetzungsmodus arbeiten und auf den Rückverweis eine andere Zahl folgen muss (zum Beispiel: Hinzufügen einer ursprünglichen Zahl direkt nach einem passenden Muster), können Sie keine Syntax wie \1 verwenden, um den Rückverweis zu beschreiben. Beispielsweise führt \11 dazu, dass preg_replace() nicht verstehen kann, ob eine \1-Rückreferenz gefolgt von einer ursprünglichen 1 oder eine \11-Rückreferenz gefolgt von nichts gewünscht wird. Die Lösung besteht in diesem Fall darin, ${1}1 zu verwenden. Dadurch wird eine separate Rückreferenz für $1 erstellt, eine separate Rückreferenz für Quelle 1.

Bei Verwendung des veralteten e-Modifikators maskiert diese Funktion einige Zeichen (z. B. ', " und NULL) und führt dann eine Rückreferenzersetzung durch. Wenn dies erledigt ist, stellen Sie bitte sicher, dass nach dem Parsen keine Rückreferenzen vorhanden sind. Syntaxfehler, die durch einzelne Zeichen verursacht werden Anführungszeichen oder doppelte Anführungszeichen (zum Beispiel: 'strlen('$1')+strlen("$2")' Stellen Sie sicher, dass Sie die Zeichenfolgensyntax von PHP einhalten und die Eval-Syntax einhalten die Methode eval, um die resultierende Zeichenfolge als PHP-Code auszuwerten und den Rückgabewert als endgültige Zeichenfolge für die Ersetzungsfunktion

mb_strlen() zu verwenden.

mb_strlen()函数可以计算英文字符串、中文字符串或中英混合字符串的长度。

mb_strlen($str [, $encoding = mb_internal_encoding()])
  • $str 为需要计算长度的字符串

  • $encoding 是可选参数,为字符编码,如果省略则使用内部字符编码。

mb_strlen() 函数的返回值为具有 $encoding 编码的字符串 $str 所包含的字符数,如果 $encoding 无效则返回 false。

注意:在 mb_strlen() 函数中,无论是汉字,还是英文、数字、小数点、下划线和空格,都只占一个字符长度。

推荐学习:《PHP视频教程

Das obige ist der detaillierte Inhalt vonSo ermitteln Sie, wie viele chinesische Zeichen eine Zeichenfolge in PHP enthält. 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