php之正则表达式函数总结
- ##匹配 用于匹配常用的函数有两个,分别是
preg_match
和preg_match_all
看代码:
//preg_match($pattern, $subject, &$match, [$flags=0], [$offset=0]) 一般三个参数$pattern = '/[0-9]/'; //正则$subject = 'abc1def2ghi3klm4'; //需要匹配的字符串$return = preg_match($pattern, $subject, $matches);echo $return; //1 因为匹配到了1个就会停止匹配print_r($matches); // ['1'] 将所有满足正则规则的匹配放到数组里。//preg_match_all($pattern, $subject, $matches,...)$pattern = '/[0-9]/';//正则字符串$subject = 'abc1def2ghi3klm4';//需要匹配的目标字符串$return = preg_match_all($pattern, $subject, $matches);echo $return;//4 因为会匹配所有的print_r($matches);//[0=>['1','2','3','4']] 注意是个二维数组。复制代码
- ##替换 用于替换常用的函数也有两个
preg_replace
和preg_filter
,这两个灰常的相似!!! 看代码:
//preg_replace($pattern, $replacement, $subject)$pattern = '/[0-9]/';$replacement = '嘿嘿嘿';$subject = 'a1b2c3';$return = preg_replace($pattern, $replacement, $subject);echo $return; //'a嘿嘿嘿b嘿嘿嘿c嘿嘿嘿'//preg_filter($pattern, $replacement, $subject) //和preg_replace 没有任何变化$pattern = '/[0-9]/';$replacement = '嘿嘿嘿';$subject = 'a1b2c3';$return = preg_filter($pattern, $replacement, $subject);echo $return; //'a嘿嘿嘿b嘿嘿嘿c嘿嘿嘿'//但是$pattern 和 $subject都是数组呢$pattern = array('/[0-3]/', '/[4-6]/', '/[7-9]/');$replacement = array('小', '中', '大');$subject = array('a', 'b', '1as', 'd', 's5d', '7qq');$return = preg_replace($pattern, $replacement, $subject);print_r($return);//结果Array( [0] => a [1] => b [2] => 小as [3] => d [4] => s中d [5] => 大qq) $pattern = array('/[0-3]/', '/[4-6]/', '/[7-9]/');$replacement = array('小', '中', '大');$subject = array('a', 'b', '1as', 'd', 's5d', '7qq');$return = preg_filter($pattern, $replacement, $subject);print_r($return);//结果Array( [2] => 小as [4] => s中d [5] => 大qq)复制代码
- ##** 数组匹配 + 分割** 分别是
preg_grep
和preg_split
看代码:
//趁热打铁 其实preg_grep呢 就是preg_filter的阉割版 只匹配 不替换而已//preg_grep($pattern, $subject)$subject = ['r', 'a2', 'b3', 'c', 'd'];$pattern = '/[0-9]/';$fl_array = preg_grep($pattern, $subject);print_r($fl_array);//结果:Array( [1] => a2 [2] => b3) //注意索引//preg_split($pattern, $subject) 返回分割后的数组$subject = 'a132b456c777d';$pattern = '/[0-9]+/'; 匹配至少一个数字$return = preg_split($pattern, $subject);print_r($return);//结果:Array( [0] => a [1] => b [2] => c [3] => d)复制代码