ホームページ  >  記事  >  バックエンド開発  >  PHPでよく使われる正規表現関数の詳細な説明

PHPでよく使われる正規表現関数の詳細な説明

小云云
小云云オリジナル
2018-03-26 10:12:591604ブラウズ

この記事では主に、PHP でよく使用される正規表現関数について詳しく説明します。お役に立てれば幸いです。

ステートメント: $pattern=正規表現、$subject=target data

1.preg_match() および preg_match_all()

preg_match($pattern,$subject,[array &$matches])
preg_match_all($pattern,$subject,array &$matches)

preg_match は 1 回のみ一致し、preg_match_all は一致するすべての文字列と一致し、それらを matchs 配列に配置します。どちらの関数も整数の戻り値を持ちます。

return 結果が一致した回数。

関数の戻り値を通じて、一致したキーと値のペアの数を知ることもできます。

それを体験するために例を挙げてみましょう:

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


上記のコードは、文字列 weuyr3ui76as83s0ck9 内の数値を検索することです。

2. preg_replace() と preg_filter()

preg_replace($pattern,$replacemenrt,$subject)
preg_filter($pattern,$replacement,$subject)

例を挙げてみましょう:

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

preg_replacement() では文字列だけでなく配列も使用できます。

必要なのは次のとおりです: $pattern = array('/[0-3]/','[4-6]','[7-9]');

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

これは、0 ~ 3 の数字が一致する場合は代わりに「ball」が使用され、4 ~ 6 の数字が一致する場合は「宝」が置換に使用されます。 7 から 9 までの数字の場合は、「宝」を使用して置き換えます。

例:

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

上記 2 つの例では preg_filter() と preg_replacement() の結果は同じですが、両者の違いは何でしょうか?

$subject = array('weuy','r3ui','76as83','s','0ck9'); を追加すると、それらの違いが表示されます:

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

上から見ると、次のようになります。

preg_replacement()関数は置換語の有無に関わらず表示されますが、preg_filter()関数は置換語が無い場合は表示されないことが分かりました。

関連する推奨事項:

PHP 正規表現の共有

よく使用される正規表現の例_正規表現

PHP 正規表現の概要

以上がPHPでよく使われる正規表現関数の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。