Explication détaillée des fonctions d'expression régulière couramment utilisées en PHP

小云云
Libérer: 2023-03-22 09:44:01
original
1655 Les gens l'ont consulté

Cet article partage principalement avec vous l'explication détaillée des fonctions d'expression régulière couramment utilisées en PHP. J'espère qu'il pourra vous aider.

Déclaration : $pattern=regular expression, $subject=target data

1.preg_match() et preg_match_all()

preg_match($pattern,$subject,[array &$matches])
preg_match_all($pattern,$subject,array &$matches)
Copier après la connexion

preg_match ne correspondra qu'une seule fois, preg_match_all fera correspondre toutes les chaînes correspondantes et les placera dans le tableau matches, et les deux fonctions auront une valeur de retour entière.

renvoie le nombre de fois où le résultat correspond;

Nous pouvons également connaître le nombre de paires clé-valeur dans les correspondances grâce à la valeur de retour de la fonction.

Donnons un exemple pour en faire l'expérience :

<?php  
//preg_match ,preg_match_all  
$pattern = &#39;/[0-9]/&#39;;  
$subject = &#39;weuyr3ui76as83s0ck9&#39;;  
$m1 = $m2 = array();  
preg_match($pattern,$subject,$m1);  
preg_match_all($pattern,$subject,$m2);  
show($m1);  
echo &#39;<hr>&#39;;  
show($m2);  
function show($var = null){  
    if(empty($var)){  
        echo &#39;null&#39;;  
    }  
    else if(is_array($var)||is_object($var)){  
        //array,object  
        echo &#39;<pre class="brush:php;toolbar:false">&#39;;  
        print_r($var);  
        echo &#39;
'; } else{ //string ,int ,float... echo $var; } } ?>
Copier après la connexion


Le code ci-dessus consiste à trouver le numéro dans la chaîne weuyr3ui76as83s0ck9.

2. preg_replace() et preg_filter()

preg_replace($pattern,$replacemenrt,$subject)
preg_filter($pattern,$replacement,$subject)
Copier après la connexion

Donnons un exemple :

<?php  
//preg_filter() preg_replace()  
$pattern = &#39;/[0-9]/&#39;;  
$subject =&#39;weuyr3ui76as83s0ck9&#39;;  
$replacement = &#39;球宝宝&#39;;  
$str1 = preg_replace($pattern,$replacement,$subject);  
$str2 = preg_filter($pattern,$replacement,$subject);  
show($str1);  
echo &#39;<hr>&#39;;  
show($str2);  
function show($var = null){  
    if(empty($var)){  
        echo &#39;null&#39;;  
    }  
    else if(is_array($var)||is_object($var)){  
        //array,object  
        echo &#39;<pre class="brush:php;toolbar:false">&#39;;  
        print_r($var);  
        echo &#39;
'; } else{ //string ,int ,float... echo $var; } } ?>
Copier après la connexion

Dans preg_replacement(), non seulement les caractères peuvent être utilisés. ou des tableaux peuvent également être utilisés.

Juste besoin de : $pattern = array('/[0-3]/','[4-6]','[7-9]');

$replacement = array('ball','bao','bao');

Cela signifie que lorsqu'un nombre de 0 à 3 correspond, "ball" sera utilisé à la place lorsqu'il correspond à 4-6 lors de la correspondance ; un certain nombre dans , utilisez plutôt "宝" ; lorsque vous faites correspondre un certain nombre dans 7-9, utilisez plutôt "宝".

Par exemple :

<?php  
//preg_filter() preg_replace()  
//$pattern = &#39;/[0-9]/&#39;  
$pattern = array(&#39;/[0-3]/&#39;,&#39;/[4-6]/&#39;,&#39;/[7-9]/&#39;);  
$subject =&#39;weuyr3ui76as83s0ck9&#39;;  
//$replacement = &#39;球宝宝&#39;;  
$replacement = array(&#39;球&#39;,&#39;宝&#39;,&#39;宝&#39;);  
$str1 = preg_replace($pattern,$replacement,$subject);  
$str2 = preg_filter($pattern,$replacement,$subject);  
show($str1);  
echo &#39;<hr>&#39;;  
show($str2);  
function show($var = null){  
    if(empty($var)){  
        echo &#39;null&#39;;  
    }  
    else if(is_array($var)||is_object($var)){  
        //array,object  
        echo &#39;<pre class="brush:php;toolbar:false">&#39;;  
        print_r($var);  
        echo &#39;
'; } else{ //string ,int ,float... echo $var; } } ?>
Copier après la connexion

Puisque les résultats de preg_filter() et preg_replacement() sont les mêmes dans les deux exemples ci-dessus, quelle est la différence entre eux ?

Lorsque nous ajoutons $subject = array('weuy','r3ui','76as83','s','0ck9');, la différence entre eux sera affichée :

<?php  
//preg_filter() preg_replace()  
//$pattern = &#39;/[0-9]/&#39;  
$pattern = array(&#39;/[0-3]/&#39;,&#39;/[4-6]/&#39;,&#39;/[7-9]/&#39;);  
//$subject =&#39;weuyr3ui76as83s0ck9&#39;;  
$subject = array(&#39;weuy&#39;,&#39;r3ui&#39;,&#39;76as83&#39;,&#39;s&#39;,&#39;0ck9&#39;);  
//$replacement = &#39;球宝宝&#39;;  
$replacement = array(&#39;球&#39;,&#39;宝&#39;,&#39;宝&#39;);  
  
$str1 = preg_replace($pattern,$replacement,$subject);  
$str2 = preg_filter($pattern,$replacement,$subject);  
  
show($str1);  
echo &#39;<hr>&#39;;  
show($str2);  
  
function show($var = null){  
    if(empty($var)){  
        echo &#39;null&#39;;  
    }  
    else if(is_array($var)||is_object($var)){  
        //array,object  
        echo &#39;<pre class="brush:php;toolbar:false">&#39;;  
        print_r($var);  
        echo &#39;
'; } else{ //string ,int ,float... echo $var; } } ?>
Copier après la connexion

Comme le montre ce qui précède :

La fonction preg_replacement() sera affichée qu'il y ait ou non des mots remplacés, mais la fonction preg_filter() ne sera pas affichée s'il n'y a pas de mots remplacés. de.

Recommandations associées :

Partage d'expressions régulières PHP

Exemples d'expressions régulières couramment utilisées_expression régulière

Résumé des expressions régulières 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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal