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

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

青灯夜游
Libérer: 2023-03-16 21:16:01
original
4497 Les gens l'ont consulté

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);
?>
Copier après la connexion

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

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

join(&#39;&#39;,$arr[0])
Copier après la connexion

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)
Copier après la connexion

参数说明如下:

  • 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)
Copier après la connexion
  • separator:可选。规定数组元素之间放置的内容。默认是 ""(空字符串)。

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

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

方法2:使用preg_replace()函数

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

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);
?>
Copier après la connexion
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]])
Copier après la connexion
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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal