Maison  >  Article  >  développement back-end  >  Explication détaillée des fonctions d'expression régulière couramment utilisées en PHP

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

小云云
小云云original
2018-03-26 10:12:591604parcourir

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)

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; } } ?>


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)

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; } } ?>

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; } } ?>

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 :

a974b541f0baaa3fbdc2e2536727118c';  
show($str2);  
  
function show($var = null){  
    if(empty($var)){  
        echo 'null';  
    }  
    else if(is_array($var)||is_object($var)){  
        //array,object  
        echo 'e03b848252eb9375d56be284e690e873';  
        print_r($var);  
        echo 'bc5574f69a0cba105bc93bd3dc13c4ec';  
    }  
    else{  
        //string ,int ,float...  
        echo $var;  
    }  
}  
?>

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!

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