Maison  >  Article  >  développement back-end  >  Comment détecter le nombre de caractères chinois qu'une chaîne contient en php

Comment détecter le nombre de caractères chinois qu'une chaîne contient en php

青灯夜游
青灯夜游original
2022-09-22 18:55:543685parcourir

É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")".

Comment détecter le nombre de caractères chinois qu'une chaîne contient en php

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,&#39;&#39;, $str);
var_dump($newStr);
?>

renverra une chaîne contenant toutes les lettres chinoises

Comment détecter le nombre de caractères chinois quune chaîne contient en php

É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;

Comment détecter le nombre de caractères chinois quune chaîne contient en php

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 :

  • $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 (illimité).
  • $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.

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!

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