<?php $pattern='/[0-9]/'; //定义匹配的模式 $subject='weuyr3ui76as83s0ck9'; //定义需匹配的对象 $m1=$m2=array(); //初始化两个空数组 $num1=preg_match($pattern, $subject, $m1); //将匹配的结果赋予空数组$m1 $num2=preg_match_all($pattern, $subject, $m2); //将匹配的结果赋予空数组$m2 show($m1); echo "<hr />"; show($m2); echo "------------------------------------------<br/>"; echo "函数preg_match()匹配的结果数为".$num1; echo "<br/>函数preg_match_all()匹配的结果数为".$num2; //定义一个匹配结果展示的函数 function show($var=null){ if(empty($var)){ echo "null"; }elseif(is_array($var) || is_object($var)){ echo "<pre>"; print_r($var); echo "</pre>"; }else{ echo $var; } } ?>
小结:preg_match()只会匹配出符合模式的第一个元素
preg_match_all()会匹配出符合模式的所有元素
NO A PIC YOU SEE A XXX
//执行结果如下图
//***************************************************************************************
2-----字符串替换函数preg_replace()与preg_fileter()的使用
//第一段代码是字符串的匹配替换 第二段代码是数组的匹配替换(一一对应)
代码段1:
<?php $pattern='/[0-9]/'; //需替换的元素 $subject='weuyr3ui76as83s0ck9'; $replace="测试"; //替换后的元素 $rest1=preg_replace($pattern, $replace, $subject); $rest2=preg_filter($pattern, $replace, $subject); show($rest1); //output---weuyr测试ui测试测试as测试测试s测试ck测试 echo "<hr />"; show($rest2); //output---weuyr测试ui测试测试as测试测试s测试ck测试 //定义一个匹配结果展示的函数 function show($var=null){ if(empty($var)){ echo "null"; }elseif(is_array($var) || is_object($var)){ echo "<pre>"; print_r($var); echo "</pre>"; }else{ echo $var; } } ?>
代码段2
<?php $pattern=array('/[012345]/','/[6789]/'); //0到5用 “测” 替换,6到9用 “试” 替换 $subject='weuyr3ui76as83s0ck9'; $replace=array('测','试'); $m1=$m2=array(); $rest1=preg_replace($pattern, $replace, $subject); $rest2=preg_filter($pattern, $replace, $subject); show($rest1); //输出---weuyr测ui试试as试测s测ck试 echo "<hr />"; //输出---weuyr测ui试试as试测s测ck试 show($rest2); //定义一个匹配结果展示的函数 function show($var=null){ if(empty($var)){ echo "null"; }elseif(is_array($var) || is_object($var)){ echo "<pre>"; print_r($var); echo "</pre>"; }else{ echo $var; } } ?>
也许到这里你会觉得这两函数的执行效果是一样的啊,没班毛线的区别啊,No,当,替换的原始对象是也是一个数组时会是什么情况呢?
<?php $pattern=array('/[012345]/','/[6789]/'); $subject=array('weuy','r3ui','76as','83s','0ck9'); $replace=array('测','试'); $m1=$m2=array(); $rest1=preg_replace($pattern, $replace, $subject); $rest2=preg_filter($pattern, $replace, $subject); show($rest1); echo "<hr />"; show($rest2); //定义一个匹配结果展示的函数 function show($var=null){ if(empty($var)){ echo "null"; }elseif(is_array($var) || is_object($var)){ echo "<pre>"; print_r($var); echo "</pre>"; }else{ echo $var; } } ?>
结果如下图
说明:前者是preg_replace()函数,不和服替换条件会原样输出-----------5个元素
后者是preg_filter()函数,不符合提交的会被过滤掉------------------4个元素
函数preg_grep()将符合模式的元素查找出来
<?php $pattern='/[0-9]/'; //定义匹配的模式 $subject=array('weuy','r3ui','76as','83s','0ck9'); $rest1=preg_grep($pattern, $subject); show($rest1); //定义一个匹配结果展示的函数 function show($var=null){ if(empty($var)){ echo "null"; }elseif(is_array($var) || is_object($var)){ echo "<pre>"; print_r($var); echo "</pre>"; }else{ echo $var; } } ?>
//*******************************
运行结果
Array ( [1] => r3ui [2] => 76as [3] => 83s [4] => 0ck9 )
//******************************