当前位置: 首页 > 后端技术 > PHP

php的正则表达式函数总结

时间:2023-03-29 18:18:09 PHP

php的正则表达式函数[$flags=0],[$offset=0])一般三个参数$pattern='/[0-9]/';//常规$subject='abc1def2ghi3klm4';//要匹配的字符串$return=preg_match($pattern,$subject,$matches);echo$return;//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);回声$返回;//'aheyheybheyheyheycheyheyhey'//preg_filter($pattern,$replacement,$subject)//preg_replace不变$pattern='/[0-9]/';$replacement='嘿嘿';$subject='a1b2c3';$return=preg_filter($pattern,$replacement,$subject);echo$return;//'aheyheybHeyheycheyhey'//但是$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);//结果数组([0]=>a[1]=>b[2]=>smallas[3]=>d[4]=>d[5]ins=>bigqq)$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);//结果数组([2]=>smallas[4]=>sind[5]=>bigqq)数组匹配+分裂就是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);//Result:Array([1]=>a2[2]=>b3)//注意索引//preg_split($pattern,$subject)返回分割后的数组$subject='a132b456c777d';$pattern='/[0-9]+/';匹配至少一个数字$return=preg_split($pattern,$subject);print_r($return);//结果:数组([0]=>a[1]=>b[2]=>c[3]=>d)