Maison > Article > développement back-end > Comment extraire uniquement les caractères chinois d'une chaîne php
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)".
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); ?>
然后可以使用join()函数将结果值拼接成一个字符串。
join('',$arr[0])
说明:
1)preg_match_all()函数
preg_match_all()函数会搜索字符串中所有可以和正则表达式匹配的结果
preg_match_all(pattern,subject,matches,flags,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
”搜索字符串中的非中文字母,并将其替换成空字符''
<?php header("Content-type:text/html;charset=utf-8"); $str= 'php中文网!-=1548'; echo $str."<br>"; $pattern = "/[^\x{4E00}-\x{9FFF}]+/u"; $newstr=preg_replace($pattern,'', $str);preg_match_all("/[\x{4e00}-\x{9fff}]+/u","$str",$arr); var_dump($newstr); ?>
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]])
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 : 🎜
/[^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 : 🎜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!