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(). 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!preg_replace($pattern, $replacement, $subject [, $limit = -1 [, &$count]])
🎜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 : 🎜