Maison >développement back-end >Problème PHP >Comment utiliser des expressions régulières en php pour faire correspondre uniquement les caractères chinois

Comment utiliser des expressions régulières en php pour faire correspondre uniquement les caractères chinois

青灯夜游
青灯夜游original
2023-02-24 09:49:253557parcourir

En php, vous pouvez utiliser l'expression régulière "/[x{4e00}-x{9fff}]+/u" et la fonction preg_match_all() pour faire correspondre uniquement les caractères chinois, la syntaxe "preg_match_all("/[x{ 4e00}- x{9fff}". La fonction preg_match_all() recherchera tous les résultats dans la chaîne pouvant correspondre à l'expression régulière. Avec "/[x{4e00}-x{9fff}]+/u", vous pouvez filtrer la chaîne et obtenir uniquement les caractères chinois.

Comment utiliser des expressions régulières en php pour faire correspondre uniquement les caractères chinois

L'environnement d'exploitation de ce tutoriel : système windows7, version PHP8, ordinateur DELL G3

En php, vous pouvez utiliser l'expression régulière "/[x". {4e00}-x{9fff} ]+/u" et la fonction preg_match_all() pour faire correspondre uniquement les caractères chinois. La fonction /[x{4e00}-x{9fff}]+/u”和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。

preg_match_all()函数配合正则表达式“/[x{4e00}-x{9fff}]+/u

preg_match_all() recherchera tous les résultats dans la chaîne qui peuvent correspondre au caractère normal. expression
<?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);
?>

La description du paramètre est la suivante :

    pattern : le modèle à rechercher, c'est-à-dire l'expression régulière définie

    subject : la chaîne à rechercher Comment utiliser des expressions régulières en php pour faire correspondre uniquement les caractères chinois

    matches : paramètre facultatif (multidimensionnel ; array), utilisé pour stocker tous les résultats correspondants, tri de tableau Spécifié par $flags;

    flags : paramètre facultatif, qui peut être utilisé en combinaison avec les balises suivantes (notez que PREG_PATTERN_ORDER et PREG_SET_ORDER ne peuvent pas être utilisés en même temps) :

    PREG_PATTERN_ORDER : Le résultat est trié comme $matches[0] pour enregistrer toutes les correspondances du modèle complet, $matches[1] enregistre toutes les correspondances du premier sous-groupe, et ainsi de suite Comment utiliser des expressions régulières en php pour faire correspondre uniquement les caractères chinois

    PREG_SET_ORDER : Le résultat est trié comme $ matches[0] contient toutes les correspondances (y compris les sous-groupes) obtenues par la première correspondance, $matches[ 1] est un tableau contenant toutes les correspondances (y compris les sous-groupes) trouvées dans la deuxième correspondance, et ainsi de suite

    PREG_OFFSET_CAPTURE : Si cet indicateur est passé , chaque correspondance trouvée sera renvoyée avec son décalage par rapport à la chaîne cible Shift. Notez que cela modifiera chaque élément de la chaîne de résultat de la correspondance dans $matches afin que le 0ème élément soit la chaîne du résultat de la correspondance et que le 1er élément soit le décalage de la. correspond à la chaîne de résultat dans le sujet.

    offset : paramètre facultatif, $offset est utilisé pour lancer la recherche à partir de la position spécifiée dans la chaîne cible (l'unité est en octets). La fonction
    • preg_match_all() peut renvoyer le nombre de. correspondances de modèle (éventuellement 0). Si une erreur se produit, FALSE sera renvoyé. La fonction

    • preg_match_all() peut être utilisée avec l'expression régulière "/[x{4e00}-x{9fff}] +/u" pour filtrer la chaîne et obtenir uniquement les caractères chinois. caractère.

    Remarque : La fonction

    preg_match_all() stockera les caractères de fonction correspondants dans un tableau un par un (le tableau est spécifié par le troisième paramètre).

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

    À ce stade, vous pouvez utiliser la fonction implode() pour diviser la valeur du résultat en une chaîne. 🎜
    implode(separator,array)
    🎜🎜🎜🎜🎜Connaissances étendues : fonction implode()🎜🎜🎜La fonction implode() renvoie une chaîne composée d'éléments de tableau. 🎜rrreee🎜🎜🎜séparateur : facultatif. Spécifie ce qui est placé entre les éléments du tableau. La valeur par défaut est "" (chaîne vide). 🎜🎜🎜🎜tableau : obligatoire. Tableaux à combiner en chaînes. 🎜🎜🎜🎜Valeur de retour : renvoie une chaîne composée d'éléments de tableau.​ 🎜🎜Il existe également une fonction avec la même fonction que la fonction implode() : join(). La fonction join() est un alias de la fonction implode(). 🎜🎜Apprentissage recommandé : "🎜Tutoriel vidéo PHP🎜"🎜

    Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

    Déclaration:
    Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn