Maison > Article > développement back-end > Comment détecter le nombre de caractères chinois qu'une chaîne contient en php
Étapes de détection : 1. Utilisez la fonction preg_replace() avec des expressions régulières pour filtrer la chaîne et supprimer les lettres non chinoises dans la chaîne. La syntaxe est "preg_replace("/[^x{4E00}-x{9FFF}] +/u ",'', original string)" renverra une chaîne contenant toutes les lettres chinoises ; 2. Utilisez la fonction mb_strlen() pour calculer la longueur de la chaîne de filtre (nombre de caractères chinois), la syntaxe "mb_strlen(filter chaîne de caractères,"utf-8")".
L'environnement d'exploitation de ce tutoriel : système Windows 7, PHP version 8.1, ordinateur DELL G3
En PHP, vous pouvez utiliser la fonction preg_replace() et la fonction mb_strlen() pour détecter le nombre de caractères chinois dans une chaîne contient.
Étapes de mise en œuvre :
Étape 1 : Utilisez la fonction preg_replace() avec des expressions régulières pour filtrer les chaînes et supprimer les lettres non chinoises dans les chaînes
Principe de suppression preg_replace() : utilisez des expressions régulières pour rechercher Lettres non chinoises dans la chaîne et remplacez-les par le caractère nul ''.
<?php header("Content-type:text/html;charset=utf-8"); $str = "欢迎4546来到php这里。zblog,我的?#$%^天呀&())*(&^"; echo "原字符串:"; var_dump($str); $pattern = "/[^\x{4E00}-\x{9FFF}]+/u"; echo "过滤字符串后:"; $newStr=preg_replace($pattern,'', $str); var_dump($newStr); ?>
renverra une chaîne contenant toutes les lettres chinoises
Étape 2 : Utilisez la fonction mb_strlen() pour calculer la longueur de la chaîne filtrée (le nombre de caractères chinois)
$len=mb_strlen($newStr,"utf-8"); echo "中文字符的个数:".$len;
Instructions :
preg_replace() : La fonction
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 :
preg_replace($pattern, $replacement, $subject [, $limit = -1 [, &$count]])
La description du paramètre. est le suivant :
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.
La méthode de comptage des numéros de série pour capturer les sous-groupes est la suivante : le support gauche représentant le sous-groupe de capture est compté de gauche à droite, en commençant par 1. Si vous souhaitez utiliser des barres obliques inverses dans $replacement, vous devez utiliser 4 ("\\" car il s'agit d'abord d'une chaîne PHP, puis deux après l'échappement, et ensuite elle est considérée comme un texte original après passage par la barre oblique inverse du moteur d'expression régulière).
Lorsque vous travaillez en mode remplacement et que la référence arrière doit être suivie d'un autre numéro (par exemple : ajouter un numéro d'origine immédiatement après un modèle correspondant), vous ne pouvez pas utiliser une syntaxe telle que \1 pour décrire la référence arrière. Par exemple, \11 empêchera preg_replace() de comprendre si vous voulez une référence arrière \1 suivie d'un 1 d'origine, ou une référence arrière \11 suivie de rien. La solution dans ce cas est d'utiliser ${1}1. Cela crée une référence arrière distincte pour $1, une référence arrière distincte pour la source 1.
Lors de l'utilisation du modificateur e obsolète, cette fonction échappera certains caractères (c'est-à-dire : ', " et NULL), puis effectuera le remplacement des références arrière. Lorsque cela est fait, assurez-vous qu'il n'y a pas de références arrière après l'analyse des erreurs de syntaxe causées par un seul guillemets ou guillemets doubles (par exemple : 'strlen('$1')+strlen("$2")'). Assurez-vous de respecter la syntaxe de chaîne de PHP et de respecter la syntaxe eval. Après avoir terminé le remplacement, le moteur utilisera. la méthode eval pour évaluer la chaîne résultante en tant que code php et utiliser la valeur de retour comme chaîne finale impliquée dans le remplacement
fonction mb_strlen()
.mb_strlen()函数可以计算英文字符串、中文字符串或中英混合字符串的长度。
mb_strlen($str [, $encoding = mb_internal_encoding()])
$str 为需要计算长度的字符串
$encoding 是可选参数,为字符编码,如果省略则使用内部字符编码。
mb_strlen() 函数的返回值为具有 $encoding 编码的字符串 $str 所包含的字符数,如果 $encoding 无效则返回 false。
注意:在 mb_strlen() 函数中,无论是汉字,还是英文、数字、小数点、下划线和空格,都只占一个字符长度。
推荐学习:《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!