一、正则表达式函数解析

1.正则表达式参数说明

建议用$pattern = 正则表达式   $subject = 匹配的目标数据   这个两个参数来命名。

2.正则表达式数据输出函数简介

<?php

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;
    }
}

?>

3.正则表达式之preg_match ,preg_match_all

PHP中常用的正则表达式函数:preg_match()preg_match_all()

preg_match($pattern,$subject,[array &$matches])第三个参数可选,匹配一次

preg_match_all($pattern,$subject,[array &$matches])第三个参数必填,匹配所有

第三个参数有&符号,表示第三个参数是引用传递

return 匹配到结果的次数;

<?php

$pattern = '/[0-9]/';#正则表达式,匹配0-9的数值
$subject = 'dfsfs26f7sdf84c';#要匹配的目标数据

$m1 = $m2 = array();
$t1 = preg_match($pattern,$subject,$m1);#第三个参数可选,匹配一次
$t2 = preg_match_all($pattern,$subject,$m2);#第三个参数必填,匹配所有

show($m1);#匹配到的数放到数组m1里
echo '<hr  />';#分隔线
show($m2);#匹配到的数放到数组m2里
echo '<hr/>';
show($t1.'||'.$t2);#匹配的次数



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;
    }
}

?>

运行结果:

4.正则表达式函数之preg_replace与preg_filter

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

preg_replace preg_filter

preg_replace($pattern,$replacement,$subject)

preg_filter($pattern,$replacement,$subject)

 

字符串替换:str_replace(…)

str_replace(find,replace,string,count)

参数

描述

find

必需。规定要查找的值。

replace

必需。规定替换 find 中的值的值。

string

必需。规定被搜索的字符串。

count

可选。对替换数进行计数的变量。

<?php

//$pattern = '/[0-9]/';#正则表达式,匹配0-9的数值
$pattern = array('/[0123]/','/[456]/','/[789]/');#数组:正则表达式,匹配0-9的数值

//$subject = 'dfsfs26f7sdf84c';#要匹配的目标数据
$subject = array('dfsf','s26f','7sd','f8','4c');#要匹配的目标数据

//$replacement = '加油';#把匹配到的值替换成“加油”
$replacement = array('加','油','啊');#匹配到0123任意一位,就改成“加”,匹配456任意一位,就替换成“油”

$str1 = preg_replace($pattern,$replacement,$subject);
$str2 = preg_filter($pattern,$replacement,$subject);

show($str1);#匹配到的数放到数组m1里
echo '<hr  />';#分隔线
show($str2);#匹配到的数放到数组m2里

?>

运行的结果,可见两个函数的区别:

注释部分运行结果,两个函数输出结果相同:

5.正则表达式函数之preg_grep

preg_grep($pattern,array $input)      #阉割版preg_filter(..),只匹配不替换,只返回匹配到的数组里的数据

$pattern = '/[0-9]/';#正则表达式,匹配0-9的数值
$subject = array('dfsf','s26f','7sd','f8','4c');#要匹配的目标数组

$arr = preg_grep($pattern,$subject);

show($arr);#匹配到的数放到数组里

返回结果,少了【0=>dfsf’:

6. 正则表达式函数之preg_split

preg_split($pattern, $subject)

explode(…)功能很相似

explode(separator,string,limit)

参数

描述

separator

必需。规定在哪里分割字符串。

string

必需。要分割的字符串。

limit

可选。规定所返回的数组元素的数目。

可能的值:

  • 大于 0 - 返回包含最多 limit 个元素的数组
  • 小于 0 - 返回包含除了最后的 -limit 个元素以外的所有元素的数组
  • 0 - 会被当做 1, 返回包含一个元素的数组

例如:explode(‘,’,$str),把字符串$str,以‘,’为界分割成数组

<?php

$pattern = '/[0-9]/';#正则表达式,匹配0-9的数值
$subject = '每天1都要,很2努力0';#要匹配的目标数据

$arr = preg_split($pattern,$subject);

show($arr);#输出结果
?>

输出结果:

7. 正则表达式函数之preg_quote

preg_quote($str)

正则运算符转译

<?php
$str = 'qwer{asdf}[1234]';
$str = preg_quote($str);

show($str);#输出结果
?>

输出结果:qwer\{asdf\}\[1234\]

总结

1.都以preg_开头

2.除了preg_quote函数外,第一个参数都是正则表达式

#使用场景

preg_match 表单验证等

preg_replace 非法词语过滤

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值