zoukankan      html  css  js  c++  java
  • 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"));//打印结果 "$aah" 这里指定了将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();
        }
  • 相关阅读:
    HDU 2553 N皇后问题
    HDU 2553 N皇后问题
    HDU 1045 Fire Net
    HDU 1045 Fire Net
    HUD 1175 连连看
    HUD 1175 连连看
    poj3190 Stall Reservations (贪心+优先队列)
    poj3190 Stall Reservations (贪心+优先队列)
    ThinkPHP 模板截取字符串 【转载】
    鼠标位置距浏览器窗体距离
  • 原文地址:https://www.cnblogs.com/wrhbk/p/14705690.html
Copyright © 2011-2022 走看看