Maison  >  Article  >  développement back-end  >  Comment extraire uniquement les caractères chinois d'une chaîne php

Comment extraire uniquement les caractères chinois d'une chaîne php

青灯夜游
青灯夜游original
2022-09-22 19:44:534420parcourir

Deux méthodes : 1. Utilisez preg_match_all() avec des chaînes de filtre normales, la syntaxe est "preg_match_all("/[x{4e00}-x{9fff}]+/u","$str",$arr);" ; 2. Utilisez preg_replace() avec la chaîne de recherche normale pour rechercher des lettres non chinoises dans la chaîne et remplacez-les par des caractères vides. La syntaxe est "preg_replace("/[^x{4E00}-x{9FFF}]+. /u",' ',$str)".

Comment extraire uniquement les caractères chinois d'une chaîne php

L'environnement d'exploitation de ce tutoriel : système Windows 7, PHP version 8.1, ordinateur DELL G3

En PHP, vous pouvez utiliser les deux fonctions suivantes pour extraire uniquement les caractères chinois de la chaîne

  • preg_replace () fonction

  • preg_match_all() fonction

Méthode 1 : utilisez la fonction preg_match_all()

preg_match_all() pour faire correspondre l'expression régulière "/[x{4e00}- x{9fff}] +/u" peut filtrer la chaîne et obtenir uniquement les caractères chinois. /[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);
?>

Comment extraire uniquement les caractères chinois dune chaîne php

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

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

Comment extraire uniquement les caractères chinois dune chaîne php

说明:

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”搜索字符串中的非中文字母,并将其替换成空字符''

Les caractères chinois correspondants seront stockés dans le tableau un par un (le tableau est spécifié par le troisième paramètre).

<?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);
?>
Comment extraire uniquement les caractères chinois dune chaîne phpComment extraire uniquement les caractères chinois dune chaîne php

Les valeurs résultantes peuvent ensuite être concaténées dans une chaîne à l'aide de la fonction join().

preg_replace($pattern, $replacement, $subject [, $limit = -1 [, &$count]])
Comment extraire uniquement les caractères chinois dune chaîne php

Instructions :

🎜1) fonction preg_match_all() 🎜🎜la fonction preg_match_all() recherchera tous les résultats dans la chaîne pouvant correspondre à l'expression régulière 🎜rrreee🎜La description du paramètre est la suivante : 🎜
    🎜modèle : le modèle à rechercher , qui est une expression régulière définie ; 🎜🎜subject : la chaîne à rechercher ; 🎜🎜matches : paramètre facultatif (tableau multidimensionnel), utilisé pour stocker tous les résultats correspondants, le tri du tableau est 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 : Les résultats sont triés dans $matches[0] pour tout sauvegarder correspondances du modèle complet, $matches[1] pour enregistrer les premières toutes les correspondances dans un sous-groupe, et ainsi de suite. 🎜🎜PREG_SET_ORDER : les résultats sont triés car $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) obtenues par la deuxième correspondance, et ainsi sur. 🎜🎜PREG_OFFSET_CAPTURE : Si cet indicateur est passé, chaque correspondance trouvée est renvoyée avec son décalage par rapport à la chaîne cible augmenté. Notez que cela modifiera chaque élément de chaîne de correspondance dans $matches en un élément où le 0ème élément est la chaîne de correspondance et le 1er élément est le décalage de la chaîne de correspondance 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 l'octet). La fonction 🎜🎜🎜preg_match_all() peut renvoyer le nombre de correspondances pour le modèle (éventuellement 0), ou FALSE si une erreur se produit. 🎜🎜2) Fonction join() La fonction 🎜🎜join() renvoie une chaîne composée d'éléments de tableau. La fonction 🎜🎜join() est un alias de la fonction implode(). 🎜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. 🎜🎜🎜🎜Méthode 2 : Utilisez la fonction preg_replace() 🎜🎜🎜🎜preg_match_all() avec l'expression régulière "/[^x{4E00}-x{9FFF}]+/u" pour rechercher des lettres non chinoises dans la chaîne et les remplacer par des caractères vides ''. 🎜rrreee🎜🎜🎜🎜🎜 Description : la fonction preg_replace()🎜🎜🎜preg_replace() peut effectuer une recherche et un remplacement d'expressions régulières. Il s'agit d'une puissante fonction de traitement de remplacement de chaîne. Le format syntaxique de cette fonction est le suivant : 🎜rrreee🎜Paramètres. Les instructions sont les suivantes : 🎜
      • $pattern : Le modèle à rechercher, qui peut être une chaîne ou un tableau de chaînes ;
      • $replacement : La chaîne ou un tableau de chaînes utilisé pour le remplacement. Si cet argument est une chaîne et que $pattern est un tableau, alors tous les modèles sont remplacés par cette chaîne. Si $pattern et $replacement sont tous deux des tableaux, chaque $pattern est remplacé par l'élément correspondant dans $replacement. S'il y a moins d'éléments dans $replacement que dans $pattern, le $pattern supplémentaire est remplacé par la chaîne vide.
      • $subject : La chaîne ou le tableau de chaînes à rechercher et à remplacer. Si $subject est un tableau, la recherche et le remplacement seront effectués sur chaque élément de $subject, et la valeur de retour sera également un tableau.
      • $limit : Paramètre facultatif, le nombre maximum de substitutions par motif sur chaque $subject. La valeur par défaut est -1 (infini).
      • $count : paramètre facultatif, s'il est spécifié, sera renseigné avec le nombre de substitutions effectuées.

      Si $subject est un tableau, la fonction preg_replace() renverra un tableau, sinon elle renverra une chaîne.

      Si la fonction preg_replace() trouve une correspondance, elle renverra le $subject remplacé, sinon elle renverra le $subject inchangé. Chaque paramètre de la fonction preg_replace() (sauf le paramètre $limit) peut être un tableau. Si le paramètre $pattern et le paramètre $replacement sont tous deux des tableaux, la fonction traitera les clés dans l'ordre dans lequel elles apparaissent dans le tableau. Si une erreur se produit, NULL est renvoyé.

      Le paramètre $replacement peut contenir des références arrière \n ou $n, cette dernière étant syntaxiquement préférée. Chacune de ces références sera remplacée par le texte capturé par le nième sous-groupe de capture correspondant. n peut être compris entre 0 et 99, \0 et $0 représentant le texte complet de correspondance de modèle.

      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