PHP正则表达式中常见函数的简单使用---一
PHP正则表达式中常见函数的简单使用---一
雨醉风尘 发表于2年前
PHP正则表达式中常见函数的简单使用---一
  • 发表于 2年前
  • 阅读 116
  • 收藏 4
  • 点赞 0
  • 评论 0

标题:腾讯云 新注册用户域名抢购1元起>>>   

摘要: 函数preg_match()与preg_match-all的用法
<?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
)

//******************************

共有 人打赏支持
粉丝 3
博文 73
码字总数 23692
×
雨醉风尘
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: