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