php tp6学习笔记(100) 正则表达式

php提供了几个方法可以满足我们对正则的使用

pre_filter

 //过滤并替换被匹配的字符串
    public function preg_filter()
    {
        //用作?匹配规则x
        //是否必填?是
        //类型:正则字符串||字符串||正则字符串数组||字符串数组 如果设置了多个匹配规则,则只要一个匹配规则匹配,则认为该项匹配,类似于||或,只不过语义更好
        $param1 = "/phpp/";

        //用作?用来替换匹配项的字符
        //是否必填?是
        //类型:字符串||字符串数组  如果为数组,则类似于将数组join后做为替换字符
        $param2 = "替换字符";

        //用作?用来替换匹配项的字符
        //是否必填?是
        //类型:字符串||字符串数组 如果为数组,则替换数组中所有匹配项
        $param3 = ["phpp 正则测试 php", "php 正则测试 php"];

        //用作?最大替换次数 默认为-1(无限),一旦达到最大匹配次数则不在执行匹配
        //是否必填?否
        //类型:int
        $param4 = -1;

        //用作?完成替换次数 默认为1。匹配了N次,这个变量的值就为N
        //是否必填?否
        //类型:int
        $param5 = 1;

        $res = preg_filter($param1, $param2, $param3, $param4, $param5);
        //如果存在匹配项,则返回匹配成功并且替换后的字符串,没有匹配项则返回null
        //如果被替换的对象是一个字符串数组 则返回一个数组,数组中包含替换后的匹配项,不符合匹配规则的匹配项会被剔除。如果不存在匹配项,则放回一个空数组.
        var_dump("<pre>", $res, $param5);
        return "index";
    }

 

 

preg_replace

   //和preg_filter 参数效果一致,只不过与preg_filter不同的是,如果被匹配的是一个数组,那么数组中没有被匹配的元素也会原封不动的返回
    public function preg_replace(){
        preg_replace();
    }

 

preg_grep

   //返回匹配数目
    public function preg_grep()
    {

        //用作?匹配规则x
        //是否必填?是
        //类型:正则字符串||字符串
        $param1 = "/php/";
        //用作?被匹配的字符串数组
        //是否必填?是
        //类型:字符串数组
        $param2 = ["我是测试字符-php"];
        //用作?如果与PREG_GREP_INVERT相等的话,则返回不被匹配的字符串项,否则返回匹配的字符串。PREG_GREP_INVERT 默认值是1
        //是否必填?是
        //类型:字符串数组
        $param3 = 1;
        //如果存在匹配项,则返回匹配项数组,如果不存在匹配项,则返回空数组
        $res = preg_grep($param1, $param2, $param3);
        var_dump($res);
    }

 

preg_match

  //查找并返回匹配的字符串
    public function preg_match()
    {
        //用作?匹配规则
        //是否必填?是
        //类型:正则字符串||字符串
        $param1 = "/php/";

        //用作?被匹配的字符串
        //是否必填?是
        //类型:字符串
        $param2 = "我测试字符串 php php";

        //用作?将匹配到的字符串填充进入此变量当中
        //是否必填?否
        $param3 = [];

        //用作?表示在返回匹配字符串的同时,也返回匹配字符串在被匹配字符串的位置
        //是否必填?否
        $param4 = PREG_OFFSET_CAPTURE; //PREG_OFFSET_CAPTURE 的默认值是256

        //用作?表示从字符串的N号索引位置进行搜索
        //是否必填?否
        //默认值?0
        $param5 = 0;
        //存在匹配项,则返回匹配的次数,它的值将是 0 次(不匹配)或 1 次,因为 preg_match() 在第一次匹配后 将会停止搜索。  ps:在php中竟然没有g修饰符,要匹配全局只能使用preg_match_all(),简直了
        $res = preg_match($param1, $param2, $param3, $param4, $param5);
        var_dump("<pre>", $res);
    }

 

preg_match_all

 //和preg_match效果一致,只不过此方法会进行全局匹配
    public function preg_match_all()
    {

    }

preg_quote

 //将字符串进行正则转义
    public function preg_quote()
    {
        //用作?需要转义的字符串
        //是否必填?是
        //类型:正则字符串||字符串
        $param1 = '$aah';

        //用作?将指定字符进行转义
        //是否必填?否
        //类型:字符串
        $param2 = "/";
        //返回一个字符串
        var_dump(preg_quote($param1, "h"));//打印结果 "\$aa\h" 这里指定了将h字符也进行转义
    }

 

preg_replace_callback_array

    //php7才有
    public function preg_replace_callback_array()
    {
        $res = preg_replace_callback_array(['/php/' => function ($match) {
            var_dump($match);
        }], "测试任务php");

        var_dump($res);
    }

 

preg_last_error

//返回最后一次执行的正则表达式出现的错误
    public function preg_last_error()
    {
        //返回一条错误信息字符串
        $res = preg_last_error();
    }

 

posted @ 2021-04-27 16:53  眼里有激光  阅读(509)  评论(0编辑  收藏  举报