PHP中常用正規表示式函數詳解

小云云
發布: 2023-03-22 09:44:01
原創
1664 人瀏覽過

本文主要和大家分享PHP中常用正規表示式函數詳解,希望能幫助大家。

宣告:$pattern=正規表示式,$subject=目標資料

1.preg_match()與preg_match_all()

preg_match($pattern,$subject,[array &$matches])
preg_match_all($pattern,$subject,array &$matches)
登入後複製

preg_match只會配對一次,preg_match_all會把所有符合的字串都配對出來,並且放置到matches數組中,而且這兩個函數都有一個整形的回傳值。

return 符合到結果的次數;

透過函數傳回值我們也可以知道matches中的鍵值對的個數。

下面我們來舉個栗子來體驗一下:

<?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('球','寶','寶');

這個意思是當匹配到0-3中的某一個數字時,就用「球」來替代;匹配到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; } } ?>
登入後複製

既然上面兩個例子中,preg_filter()和preg_replacement()的結果都一樣,那麼他們到底有什麼差別呢?

當我們把$subject = array('weuy','r3ui','76as83','s','0ck9');加上之後,就會顯示出他兩個的差別:

<?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; } } ?>
登入後複製

從上邊可以看出來:

preg_replacement()函數,無論有沒有替換的字都會顯示出來,但是preg_filter()函數如果沒有出現替換的字是不會顯示出來的。

相關推薦:

PHP正規表示式分享

常用的正規表示式實例整理_正規表示式

#PHP正規表示式的總結

#

以上是PHP中常用正規表示式函數詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板