您的位置:首页 > 编程语言 > PHP开发

PHP中常用的正则表达式函数

2018-03-25 15:47 519 查看

声明:$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] view plain copy<?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>';  
        print_r($var);  
        echo '</pre>';  
    }  
    else{  
        //string ,int ,float...  
        echo $var;  
    }  
}  
?>  

上述代码就是在字符串weuyr3ui76as83s0ck9中找到数字。


2.preg_replace()与preg_filter()

preg_replace($pattern,$replacemenrt,$subject)preg_filter($pattern,$replacement,$subject)
下面我们来举个栗子:[php] view plain copy<?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>';  
        print_r($var);  
        echo '</pre>';  
    }  
    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] view plain copy<?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>';  
        print_r($var);  
        echo '</pre>';  
    }  
    else{  
        //string ,int ,float...  
        echo $var;  
    }  
}  
?>  



既然上面两个例子中,preg_filter()和preg_replacement()的结果都一样,那么他们到底有什么区别呢?
当我们把$subject = array('weuy','r3ui','76as83','s','0ck9');加上之后,就会显示出他俩的差别:
[php] view plain copy<?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>';  
        print_r($var);  
        echo '</pre>';  
    }  
    else{  
        //string ,int ,float...  
        echo $var;  
    }  
}  
?>  



从上边可以看出来:preg_replacement()函数,无论有没有替换的字都会显示出来,但是preg_filter()函数如果没有出现替换的字是不会显示出来的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: