本文主要和大家分享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 = '/[0-9]/'; $subject = 'weuyr3ui76as83s0ck9'; $m1 = $m2 = array(); preg_match($pattern,$subject,$m1); preg_match_all($pattern,$subject,$m2); show($m1); echo '<hr>'; show($m2); function show($var = null){ if(empty($var)){ echo 'null'; } else if(is_array($var)||is_object($var)){ //array,object echo '<pre class="brush:php;toolbar:false">'; print_r($var); echo ''; } 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 = '/[0-9]/'; $subject ='weuyr3ui76as83s0ck9'; $replacement = '球宝宝'; $str1 = preg_replace($pattern,$replacement,$subject); $str2 = preg_filter($pattern,$replacement,$subject); show($str1); echo '<hr>'; show($str2); function show($var = null){ if(empty($var)){ echo 'null'; } else if(is_array($var)||is_object($var)){ //array,object echo '<pre class="brush:php;toolbar:false">'; print_r($var); echo ''; } 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 = '/[0-9]/' $pattern = array('/[0-3]/','/[4-6]/','/[7-9]/'); $subject ='weuyr3ui76as83s0ck9'; //$replacement = '球宝宝'; $replacement = array('球','宝','宝'); $str1 = preg_replace($pattern,$replacement,$subject); $str2 = preg_filter($pattern,$replacement,$subject); show($str1); echo '<hr>'; show($str2); function show($var = null){ if(empty($var)){ echo 'null'; } else if(is_array($var)||is_object($var)){ //array,object echo '<pre class="brush:php;toolbar:false">'; print_r($var); echo ''; } else{ //string ,int ,float... echo $var; } } ?>
既然上面兩個例子中,preg_filter()和preg_replacement()的結果都一樣,那麼他們到底有什麼差別呢?
當我們把$subject = array('weuy','r3ui','76as83','s','0ck9');加上之後,就會顯示出他兩個的差別:
<?php //preg_filter() preg_replace() //$pattern = '/[0-9]/' $pattern = array('/[0-3]/','/[4-6]/','/[7-9]/'); //$subject ='weuyr3ui76as83s0ck9'; $subject = array('weuy','r3ui','76as83','s','0ck9'); //$replacement = '球宝宝'; $replacement = array('球','宝','宝'); $str1 = preg_replace($pattern,$replacement,$subject); $str2 = preg_filter($pattern,$replacement,$subject); show($str1); echo '<hr>'; show($str2); function show($var = null){ if(empty($var)){ echo 'null'; } else if(is_array($var)||is_object($var)){ //array,object echo '<pre class="brush:php;toolbar:false">'; print_r($var); echo ''; } else{ //string ,int ,float... echo $var; } } ?>
從上邊可以看出來:
preg_replacement()函數,無論有沒有替換的字都會顯示出來,但是preg_filter()函數如果沒有出現替換的字是不會顯示出來的。
相關推薦:
#以上是PHP中常用正規表示式函數詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!