Maison  >  Article  >  développement back-end  >  L'apprentissage des chaînes PHP utilise des filtres réguliers pour filtrer les caractères et renvoyer des caractères numériques

L'apprentissage des chaînes PHP utilise des filtres réguliers pour filtrer les caractères et renvoyer des caractères numériques

青灯夜游
青灯夜游original
2021-08-18 17:09:503518parcourir

Dans l'article précédent "Apprentissage des chaînes PHP : Comment supprimer d'autres caractères et ne laisser que des chiffres", nous avons présenté la méthode d'utilisation de la boucle for et de la fonction in_array() ou is_numeric() pour extraire les caractères numériques dans une chaîne. Cette fois, nous continuons à apprendre et à pratiquer les chaînes PHP et à présenter plusieurs autres méthodes d'extraction de caractères numériques dans des chaînes.

Extraire des caractères numériques d'une chaîne est essentiellement une opération de filtrage de chaîne. Quand j'ai vu le filtrage de chaînes, j'ai pensé à « expression régulière ».

L'expression régulière est une formule logique pour les opérations sur les chaînes. Elle utilise des caractères spécifiques prédéfinis et des combinaisons de ces caractères spécifiques pour former une "chaîne de règles". Cette "chaîne de règles" est utilisée pour exprimer une logique de filtrage des chaînes.

Les expressions régulières construisent des modèles avec des règles spécifiques, les comparent avec les informations de chaîne d'entrée et les utilisent dans des fonctions spécifiques pour réaliser des opérations telles que la correspondance de chaînes, la recherche, le remplacement et la segmentation.

Voyons comment utiliser des expressions régulières pour filtrer des chaînes, extraire uniquement les caractères numériques de la chaîne et renvoyer une sous-chaîne composée de ces caractères numériques.

Par exemple, étant donné la chaîne suivante

$str ='0我是123456一段测试的字789符串0';

, nous souhaitons renvoyer une sous-chaîne composée de caractères numériques "01234567890" ! 01234567890”!

方法1、使用preg_replace()函数

分析一下上面的关键代码:

preg_replace("/[^0-9]/", "", $str)的意思为匹配除了0~9间的数字以外的字符,并将这些字符替换为空字符,即删除这些字符即可。那么就只剩下数字字符了,因此输出结果为:

Lapprentissage des chaînes PHP utilise des filtres réguliers pour filtrer les caractères et renvoyer des caractères numériques

我们来简单了解一下preg_replace()函数

 preg_replace() 函数可以执行正则表达式的搜索和替换,是一个强大的字符串替换处理函数,该它的语法格式为“preg_replace($pattern, $replacement, $subject [, $limit = -1 [, &$count]])”,表示搜索 subject 中匹配 pattern 的部分, 以 replacement 进行替换;可选参数 limit 用于设置最大可替换次数(默认值是-1,可无限制)。

方法2:使用preg_match_all()函数

分析一下上面的代码:

preg_match_all('/d+/',$str,$array)的意思为在字符串$str中多次查找只包含0~9间数字字符的子串,将每次的匹配结果放在一个数组$array中。我们使用var_dump($array)来输出这个数组看看:

Lapprentissage des chaînes PHP utilise des filtres réguliers pour filtrer les caractères et renvoyer des caractères numériques

会发现结果数组$array是一个二维数组,包含匹配结果的元素是内层的数组。而想要将这些元素拼接成一个字符串,就需要嵌套两层foreach循环:

  • 第一层循环中

foreach($array as $arr){
	
}
  • 将内层数组作为值赋给$arr,所以在第二层循环中需要遍历的数组变成了$arr

foreach($arr as $value){
$result .= $value;
}
  • 在每次循环中,将数组值赋给变量$value,然后使用“.=”运算符拼接到字符串$result中,因此一开始$result

    Méthode 1. Utilisez la fonction preg_replace()
preg_match_all($pattern, $subject [, &$matches [, $flags = PREG_PATTERN_ORDER [, $offset = 0 ]]])

Analysez le code clé ci-dessus :

Lapprentissage des chaînes PHP utilise des filtres réguliers pour filtrer les caractères et renvoyer des caractères numériquespreg_replace("/[^0-9]/", "", $str) signifie faire correspondre des caractères autres que les nombres entre 0 et 9, et remplacer ces caractères par des caractères vides, c'est-à-dire supprimer ces caractères. Ensuite, il ne reste que des caractères numériques, le résultat de sortie est donc :

Lapprentissage des chaînes PHP utilise des filtres réguliers pour filtrer les caractères et renvoyer des caractères numériques

Jetons un bref aperçu de la fonction preg_replace()

    La fonction preg_replace() peut effectuer la recherche et le remplacement d'expressions régulières. Il s'agit d'une puissante fonction de traitement de remplacement de chaîne. Le format de syntaxe est "preg_replace($pattern, $replacement, $subject [, $limit = -1 [, &$count]])", ce qui signifie rechercher la partie du sujet qui correspond au modèle, et le remplace par Replace ; le paramètre facultatif limit est utilisé pour définir le nombre maximum de substitutions (la valeur par défaut est -1, illimité).
  • Méthode 2 : Utilisez la fonction preg_match_all()
  • rrreee

    Analysez le code ci-dessus :
  • preg_match_all('/d+/',$str,$array) signifie en caractères Rechercher le chaîne $str plusieurs fois pour les sous-chaînes contenant uniquement des caractères numériques entre 0 et 9, et placez les résultats correspondants à chaque fois dans un tableau $array. Utilisons var_dump($array) pour afficher ce tableau et voir :

    Lapprentissage des chaînes PHP utilise des filtres réguliers pour filtrer les caractères et renvoyer des caractères numériques
Vous constaterez que le tableau de résultats $array est un tableau à deux dimensions et que les éléments contenant les résultats correspondants sont les tableaux internes. Si vous souhaitez regrouper ces éléments dans une chaîne, vous devez imbriquer deux niveaux de boucles foreach :

Dans le premier niveau de la boucle

rrreee

attribuez le tableau interne comme valeur à $ arr, donc le tableau qui doit être parcouru dans la deuxième boucle devient $arr🎜🎜🎜🎜rrreee🎜🎜🎜Dans chaque boucle, attribuez la valeur du tableau à la variable $ value, puis utilisez l'opérateur ".=" pour l'insérer dans la chaîne $result, donc $result doit d'abord être une chaîne vide . 🎜🎜🎜🎜🎜Le résultat de sortie est : 🎜🎜🎜🎜🎜 Jetons un bref coup d'œil à la fonction preg_match_all(). La fonction 🎜🎜preg_match_all() peut rechercher tous les résultats dans une chaîne pouvant correspondre à une expression régulière. C'est une fonction qui effectue une correspondance d'expression régulière globale. Son format de syntaxe est 🎜rrreee🎜🎜🎜$pattern expression régulière 🎜🎜🎜 🎜. $subject Chaîne correspondante 🎜🎜🎜🎜$matches Tous les résultats correspondants (tableau) 🎜🎜🎜🎜preg_match_all() correspondra à tous les résultats Si vous souhaitez arrêter la correspondance après une correspondance réussie, vous devez utiliser la fonction preg_match(). 🎜🎜D'accord, c'est tout. Si vous voulez savoir autre chose, vous pouvez cliquer ici. → →🎜Tutoriel vidéo php🎜🎜🎜 Enfin, je recommande de lire un cours classique "🎜PHP String Processing (Jade Girl Heart Sutra Edition)🎜", c'est gratuit~ venez apprendre ! 🎜

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