正则函数实例
<?php $content = "现任***总统唐纳德·***给95岁的前总统吉米·卡特 打了一个电话,***在电话中说,“中国正在超越***”,这令他感到不安。 卡特表示,***在战争上花费了3万亿美元, 而中国这些年来从未向任何国家发动战争,同时大力兴建基础设施。 从这番通话可以看出,面对中国的崛起,***是焦虑的。"; $pattem = "/***/"; function res_check($res){ echo "<br>搜索结果--"; foreach($res as $value){ if(is_array($value)){ foreach($value as $data){ echo "--".$data."---"; } }else{ echo "-".$value."--";; } echo "<br>"; } } //注意这里/***/和/(***)/不一样。带了括号就表示匹配美或者国都可以,不带括号就只匹配*** /*----------preg_match($pattem,$content,$matches)----------------*/ //1、搜索到第一个就结束 $res = preg_match($pattem,$content,$matches); var_dump($res);//结果为---int(1) array(1) { [0]=> string(6) "***" } echo "<br>"; var_dump($matches);//结果为---array(1) { [0]=> array(4) { [0]=> string(6) "***" [1]=> string(6) "***" [2]=> string(6) "***" [3]=> string(6) "***" } } res_check($matches); //2、在目标全部内容中把所有的符合内容都找出来 $res_b = preg_match_all($pattem,$content,$matches_b); echo "<br>"; var_dump($res_b); /* 结果为: */ echo "<br>"; var_dump($matches_b); res_check($matches_b); /* 3、查找并替换,然后返回一个替换后的新字符串,原来的字符串不变。 同时最后的参数,默认为-1,表示替换全部,如果是1,就只替换第一个。 */ $replacement = "美帝国主义"; $res_c = preg_replace($pattem,$replacement,$content); echo "<br>preg_replace"; var_dump($res_c); echo "<br>"; echo $content; //4、preg_filter感觉和上面的一致 $res_d = preg_filter($pattem,$replacement,$content); echo "<br>preg_filter:"; var_dump($res_d); echo "<br>"; echo $content; echo "<br>"; //5、转义正则表达式 $name = "xinhuluxiaoxue"; $subject = "^time$name=xiaohu!\xiaomao&[]"; $res_e = preg_quote($subject); var_dump($res_e);//结果为---string(44) "\^timexinhuluxiaoxue\=xiaohu\!\\xiaomao&\[\]" echo "<br>"; //6、返回匹配模式的数组条目 $pattem_f = '/^(\d+)?\.\d+$/'; //$pattem_f = '/90/'; $subject_array = array(1,2,3.6,8,90,40.45,48,90); $res_f = preg_grep($pattem_f,$subject_array); var_dump($res_f); res_check($res_f);//结果为3.6---40.45 //7、正则分割字符串 //$pattem_g = '/[\s,]+/'; $pattem_g = '/s/'; $subject_g = "this is a nose"; $res_g = preg_split($pattem_g,$subject_g); var_dump($res_g); res_check($res_g); echo $subject_g; ?>
运行实例 »
点击 "运行实例" 按钮查看在线实例
正则表达式实例
<?php $subject = "81112222333445556667788\x0c99000adaba+dc-cdde2effg4ghhiigkkakmllaopqirstuvwsxvzABCDEFGHIGKLMNOPQRSTUVWX这是小猫先生这是小狗***这是小猪老师1222@qq.com 2323@163.com 13393729583http://www.123.com"; function res_check($pattem){ $subject = "81112222333445556667788\x0c99000ada+badcc2ddeeff4gghhiigk-kakm6llaopqirstuvwsxvzABADBADDDBBBDDDAAACDEFGHIGKLMNOPQRSTUVWX这是小猫先生这是小狗***这是小猪老师1222@qq.com 2323@163.com 13393729583http://www.123.com2"; $res = preg_match_all($pattem,$subject,$matches); $sub_length = strlen($subject); echo "<br>原字符串的长度".$sub_length."搜索结果:"; if(is_array($res)){ foreach($res as $value){ if(is_array($value)){ foreach($value as $data){ echo "--".$data."---"; } }else{ echo "-".$value."--";; } echo "<br>"; } }else{ echo "<br>结果为--".$res; } echo "<br>结果为---"; if(is_array($matches)){ foreach($matches as $value){ if(is_array($value)){ foreach($value as $data){ echo "--".$data."---"; } }else{ echo "-".$value."--";; } echo "<br>"; } }else{ echo "<br>结果为--".$matches; } echo "<br>"; } echo $subject; //1.原子--普通字符--匹配一个a $pattem_a = '/a/'; res_check($pattem_a);//5 --a--a--a--a--a-- //2.原子--普通字符--匹配a-z之间的任意一个小写字母 $pattem_b = '/[a-zA-Z]/'; res_check($pattem_b);//85 --a--d--a--b--a--... //3.原子--非打印字符-- $pattem_c = '/\r/'; res_check($pattem_c);//0 //4.元字符--.---找到前面是ab的任意字符 $pattem_d = '/ab./'; res_check($pattem_d);//结果为---aba--- //4.元字符--12|ab 找到12或者ab并返回 $pattem_e = '/12|ab/'; res_check($pattem_e);//结果为--12--ab--12--12 //5.[^9]返回除了9以外的其他当字符 $pattem_f = '/[^9]/';//197,除了ab,把其他字符都返回了 res_check($pattem_f); $pattem_g = '/[^0-9a-zA-Z]/'; res_check($pattem_g); //6.^[0-9]找到以任意一个数字开头的字符,并返回这个字符 $pattem_h = '/^[0-9]/'; res_check($pattem_h);//9 //9.[0-9]$找到以任意一个数字结尾的字符,并返回这个字符 $pattem_k = '/[0-9]$/'; res_check($pattem_k);//---2 //7.[0-9]{3}找到3个任意数字相连的字符并取出来 $pattem_i = '/[0-9]{3}/'; res_check($pattem_i);//--111--222--233--344 //8.[0-9]{3,}找到最少3个任意数字相连的字符并取出来 $pattem_j = '/[0-9]{3,}/'; res_check($pattem_j);// //10.[0-9]{1,3}找到任意3个数字相连的字符,如果找不到,就找任意1个数字的字符 $pattem_l = '/[0-9]{1,3}/'; res_check($pattem_l);// $pattem_l = '/[a-z]{1,3}/'; res_check($pattem_l);// //11.[a-z]*找到任意一个小写字母连续出现0次,1次,多次 $pattem_m = '/[a-z]*/'; res_check($pattem_m);// //12.[a-z]+找到任意一个小写字母连续出现1次或多次的纯字母字符串 $pattem_n = '/[a-z]+/'; res_check($pattem_n); //13.[a-z]?找到任意一个小写字母连续出现0次或1次的字母 $pattem_p = '/[a-z]?/'; res_check($pattem_p); //14.预定义字符---\d--相当于[0-9]找到任意一个数字就返回这个数字,搜索全部 $pattem_aa = '/\d/'; res_check($pattem_aa); //15.预定义字符---\D --相当于[^0-9],找到任意一个不是数字的字符就返回这个字符,搜索全部 $pattem_ab = '/\D/'; res_check($pattem_ab); //16、特殊字符,比如+-*?.\^$[])(这些已经在正则中有特殊意思的字符,必须在前面加一个\,表示字符转义 $pattem_ac = '/\+/'; res_check($pattem_ac); //17.分组符---匹配ad或ba,或者0-9之间的任意一个数字 $pattem_ad = '/(ad|ba)|([0-9])/'; res_check($pattem_ad); //18.修正符---i--匹配ad或ba,不区分大小写 $pattem_ae = '/ad|ba/i'; res_check($pattem_ae);//ad-----ba-----BA-----BA---
运行实例 »
点击 "运行实例" 按钮查看在线实例