Heim >Backend-Entwicklung >PHP-Problem >So extrahieren Sie nur chinesische Zeichen aus einem PHP-String

So extrahieren Sie nur chinesische Zeichen aus einem PHP-String

青灯夜游
青灯夜游Original
2022-09-22 19:44:534504Durchsuche

Zwei Methoden: 1. Verwenden Sie preg_match_all() mit regulären Filterzeichenfolgen. Die Syntax lautet „preg_match_all(“/[x{4e00}-x{9fff}]+/u“, „$str“, $arr);“ ; 2. Verwenden Sie preg_replace() mit der regulären Suchzeichenfolge, um nach nicht-chinesischen Buchstaben in der Zeichenfolge zu suchen und diese durch leere Zeichen zu ersetzen. Die Syntax lautet „preg_replace(“/[^x{4E00}-x{9FFF}]+ /u",' ',$str)".

So extrahieren Sie nur chinesische Zeichen aus einem PHP-String

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

In PHP können Sie die folgenden zwei Funktionen verwenden, um nur die chinesischen Zeichen der Zeichenfolge

  • preg_replace zu extrahieren ()-Funktion

  • preg_match_all()-Funktion

Methode 1: Verwenden Sie die preg_match_all()-Funktion

preg_match_all()-Funktion, um den regulären Ausdruck „/[x{4e00}-“ abzugleichen x{9fff}] +/u" kann die Zeichenfolge filtern und nur chinesische Zeichen abrufen. /[x{4e00}-x{9fff}]+/u”可以过滤字符串,只获取中文字符。

会将匹配的中文字符一个个存入数组中(该数组由第三个参数指定)。

<?php
header("Content-type:text/html;charset=utf-8");
$str = "欢迎4546来到php这里。zblog,我的?#$%^天呀&())*(&^";
echo $str;
preg_match_all("/[\x{4e00}-\x{9fff}]+/u","$str",$arr);
var_dump($arr);
?>

So extrahieren Sie nur chinesische Zeichen aus einem PHP-String

然后可以使用join()函数将结果值拼接成一个字符串。

join(&#39;&#39;,$arr[0])

So extrahieren Sie nur chinesische Zeichen aus einem PHP-String

说明:

1)preg_match_all()函数

preg_match_all()函数会搜索字符串中所有可以和正则表达式匹配的结果

preg_match_all(pattern,subject,matches,flags,offset)

参数说明如下:

  • pattern:要搜索的模式,也就是定义好的正则表达式;
  • subject:要搜索的字符串;
  • matches:可选参数(多维数组),用来存放所有匹配的结果, 数组排序通过 $flags 指定;
  • flags:可选参数,可以结合下面几个标记使用(注意不能同时使用 PREG_PATTERN_ORDER 和 PREG_SET_ORDER):
    • PREG_PATTERN_ORDER:结果排序为 $matches[0] 保存完整模式的所有匹配,$matches[1] 保存第一个子组的所有匹配,以此类推。
    • PREG_SET_ORDER:结果排序为 $matches[0] 包含第一次匹配得到的所有匹配(包含子组), $matches[1] 是包含第二次匹配到的所有匹配(包含子组)的数组,以此类推。
    • PREG_OFFSET_CAPTURE:如果这个标记被传递,每个发现的匹配返回时会增加它相对目标字符串的偏移量。注意这会改变 $matches 中的每一个匹配结果字符串元素,使其成为一个第 0 个元素为匹配结果字符串,第 1 个元素为匹配结果字符串在 subject 中的偏移量。
  • offset:可选参数,$offset 用于从目标字符串中指定位置开始搜索(单位是字节)。

preg_match_all() 函数可以返回 pattern 的匹配次数(可能是 0),如果发生错误则返回 FALSE。

2)join()函数

join() 函数返回一个由数组元素组合成的字符串。

join() 函数是 implode() 函数的别名。

join(separator,array)
  • separator:可选。规定数组元素之间放置的内容。默认是 ""(空字符串)。

  • array:必需。要组合为字符串的数组。

返回值:返回一个由数组元素组合成的字符串。    

方法2:使用preg_replace()函数

preg_match_all()函数配合正则表达式“/[^x{4E00}-x{9FFF}]+/u”搜索字符串中的非中文字母,并将其替换成空字符''

Die passenden chinesischen Zeichen werden einzeln im Array gespeichert (das Array wird durch den dritten Parameter angegeben).

<?php
header("Content-type:text/html;charset=utf-8");
$str= &#39;php中文网!-=1548&#39;;
echo $str."<br>";
$pattern = "/[^\x{4E00}-\x{9FFF}]+/u";
$newstr=preg_replace($pattern,&#39;&#39;, $str);preg_match_all("/[\x{4e00}-\x{9fff}]+/u","$str",$arr);
var_dump($newstr);
?>
So extrahieren Sie nur chinesische Zeichen aus einem PHP-StringSo extrahieren Sie nur chinesische Zeichen aus einem PHP-String

Die resultierenden Werte können dann mithilfe der Funktion „join()“ zu einem String verkettet werden.

preg_replace($pattern, $replacement, $subject [, $limit = -1 [, &$count]])
So extrahieren Sie nur chinesische Zeichen aus einem PHP-String

Anleitung:

🎜1) preg_match_all()-Funktion 🎜🎜preg_match_all()-Funktion sucht nach allen Ergebnissen in der Zeichenfolge, die mit dem regulären Ausdruck 🎜rrreee🎜 übereinstimmen können. Die Parameterbeschreibung lautet wie folgt: 🎜
    🎜pattern: the Zu durchsuchendes Muster, das ein definierter regulärer Ausdruck ist; 🎜🎜subject: die zu durchsuchende Zeichenfolge; 🎜🎜matches: optionaler Parameter (mehrdimensionales Array), der zum Speichern aller übereinstimmenden Ergebnisse verwendet wird; die Array-Sortierung wird durch $flags angegeben; 🎜flags: Optionaler Parameter, der in Kombination mit den folgenden Tags verwendet werden kann (beachten Sie, dass PREG_PATTERN_ORDER und PREG_SET_ORDER nicht gleichzeitig verwendet werden können):
      🎜PREG_PATTERN_ORDER: Die Ergebnisse werden nach $matches[0] sortiert, um alle zu speichern Übereinstimmungen des vollständigen Musters, $matches[1] zum Speichern der ersten Alle Übereinstimmungen in einer Untergruppe usw. 🎜🎜PREG_SET_ORDER: Die Ergebnisse werden wie folgt sortiert: $matches[0] enthält alle Übereinstimmungen (einschließlich Untergruppen), die durch die erste Übereinstimmung erhalten wurden, $matches[1] ist ein Array, das alle Übereinstimmungen (einschließlich Untergruppen) enthält, die durch die zweite Übereinstimmung erhalten wurden, und so weiter An. 🎜🎜PREG_OFFSET_CAPTURE: Wenn dieses Flag übergeben wird, wird jede gefundene Übereinstimmung mit einem erhöhten Offset relativ zur Zielzeichenfolge zurückgegeben. Beachten Sie, dass dadurch jedes Match-String-Element in $matches so geändert wird, dass das 0. Element der Match-String und das 1. Element der Offset des Match-Strings innerhalb des Betreffs ist. 🎜🎜🎜🎜offset: Optionaler Parameter, $offset wird verwendet, um die Suche ab der angegebenen Position in der Zielzeichenfolge zu starten (Einheit ist Byte). Die Funktion 🎜🎜🎜preg_match_all() kann die Anzahl der Übereinstimmungen für ein Muster zurückgeben (möglicherweise 0) oder FALSE, wenn ein Fehler auftritt. 🎜🎜2) Funktion „join()“ 🎜🎜Funktion „join()“ gibt eine Zeichenfolge zurück, die aus Array-Elementen besteht. Die Funktion 🎜🎜join() ist ein Alias ​​der Funktion implode(). 🎜rrreee🎜🎜🎜Trennzeichen: Optional. Gibt an, was zwischen Array-Elementen platziert wird. Der Standardwert ist „“ (leerer String). 🎜🎜🎜🎜Array: erforderlich. Arrays, die zu Strings zusammengefasst werden sollen. 🎜🎜🎜🎜Rückgabewert: Gibt eine Zeichenfolge zurück, die aus Array-Elementen besteht. 🎜🎜🎜🎜Methode 2: Verwenden Sie die Funktion preg_replace() 🎜🎜🎜🎜preg_match_all() mit dem regulären Ausdruck „/[^x{4E00}-x{9FFF}]+/u“ um nicht-chinesische Buchstaben in der Zeichenfolge zu suchen und sie durch leere Zeichen '' zu ersetzen. 🎜rrreee🎜🎜🎜🎜🎜 Beschreibung: Die Funktion preg_replace()🎜🎜🎜preg_replace() kann die Suche und Ersetzung regulärer Ausdrücke durchführen. Das Syntaxformat dieser Funktion ist wie folgt: 🎜rrreee🎜Parameter Die Anleitung 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.

      Empfohlenes Lernen: „PHP-Video-Tutorial

Das obige ist der detaillierte Inhalt vonSo extrahieren Sie nur chinesische Zeichen aus einem PHP-String. 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