PHP中常用正则表达式函数详解

小云云
发布: 2023-03-22 09:44:01
原创
1655 人浏览过

本文主要和大家分享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
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板