设为首页 收藏本站
查看: 921|回复: 0

[经验分享] 一个通用的php正则表达式匹配或检测或提取特定字符类

[复制链接]

尚未签到

发表于 2017-4-14 07:32:34 | 显示全部楼层 |阅读模式
  在php开发时,日常不可或缺地会用到正则表达式,可每次都要重新写,有时忘记了某一函数还要翻查手册,所以,抽空写了一个关于日常所用到的正则表达式区配类,便于随便移置调用.(^_^有点偷懒).

  • /*/////////////////////////////////////////////////////////////  
  • * 类MatchAll功能:主要用于php日常所用到的几种检测匹配或提取特定字符.//  
  • * 主要参数设置说明: $target_str 为目标字符即需要检测的字符或数字。//  
  • * $isFind true:提取出匹配字符;false:单纯检测是否存在特定字符.  //  
  • * $isTotal true: 完全匹配模式;false:部分匹配模式.           //  
  • * @author: purpen                                      //  
  • * @email: purpen.w@gmail.com                          //  
  • * @data: 2007-07-29                                  //  
  • */////////////////////////////////////////////////////   
  • class MatchAll {   
  •     /**  
  •      * 功能: 用于检测IP地址是否合法或从字符串中提取IP字符.  
  •      *  
  •      * @param string $target_str  
  •      * @param boolean $isFind  
  •      * @param boolean $isTotal  
  •      * @return mixed  
  •      */  
  •     public static function IP_match($target_str, $isFind=false, $isTotal=false) {   
  •         //采取的匹配模式   
  •         if ($isTotal == true) {   
  •             $pattern = "/^(\d{1,3}\.){3}\d{1,3}$/";   
  •         }else{   
  •             $pattern = "/(\d{1,3}\.){3}\d{1,3}/";   
  •         }   
  •         return self::get_match_result($target_str, $pattern, $isFind);   
  •     }   
  •     /**  
  •      * 功能: 用于检测身份证号是否合法或从字符串中提取出身份证号字符.  
  •      *  
  •      * @param mixed $target_str  
  •      * @param boolean $isFind  
  •      * @param boolean $isTotal  
  •      * @return mixed  
  •      */  
  •     public static function IDCard_match($target_str, $isFind=false, $isTotal=false){   
  •         //采取的匹配模式   
  •         if ($isTotal == true){   
  •             $pattern = "/^(\d{18}|\d{17}X|\d{15})$/";   
  •         }else{   
  •             $pattern = "/(\d{18}|\d{17}X|\d{15})/";   
  •         }   
  •         return self::get_match_result($target_str, $pattern, $isFind);   
  •     }   
  •     /**  
  •      * 功能: 用于检测电话号码是否合法或从字符长串中提取出电话号码.  
  •      * @param mixed $target_str  
  •      * (例如: 010-87965421、(010)87965421、87965421、0394-5568447、(0394)5568447、5568447)  
  •      * @param boolean $isFind  
  •      * @param boolean $isTotal  
  •      * @return mixed  
  •      */  
  •     public static function phone_match($target_str, $isFind=false, $isTotal=false) {   
  •         //采用匹配模式   
  •         if ($isTotal == true) {   
  •             $pattern = "/^((\(?\d{3,4}\))?|(\d{3,4}-)?)\d{7,8}$/";   
  •         }else{   
  •             $pattern = "/((\(?\d{3,4}\))?|(\d{3,4}-)?)\d{7,8}/";   
  •         }   
  •         return self::get_match_result($target_str, $pattern, $isFind);   
  •     }    
  •     /**  
  •      * 功能:用于检测邮政编码是否合法或从字符长串中提取出邮政编码字符.  
  •      *  
  •      * @param mixed $target_str  
  •      * @param boolean $isFind  
  •      * @param boolean $isTotal  
  •      * @return mixed  
  •      */  
  •     public static function postalcode_match($target_str, $isFind=false, $isTotal=false) {   
  •         //采取的匹配模式   
  •         if ($isTotal == true) {   
  •             $pattern = "/^\d{6}$/";   
  •         }else{   
  •             $pattern = "/\d{6}/";   
  •         }      
  •         return self::get_match_result($target_str, $pattern, $isFind);   
  •     }   
  •     /**  
  •      * 功能: 用于完全匹配、部队匹配或提出网络url的方法.  
  •      * @param string $target_str  
  •      * @param boolean $isFind 是否提取出匹配目标  
  •      * @param boolean $isTotal 是否完全匹配  
  •      * @return mixed  
  •      */  
  •     public static function neturl_match ($target_str, $isFind=false, $isTotal=false) {   
  •         //采用的匹配模式   
  •         if ($isTotal == true) {   
  •             $pattern = "/^(http\:\/\/)?[a-zA-Z0-9]+(\.[a-zA-Z0-9]+)*.+$/";   
  •         }else{   
  •             $pattern = "/(http\:\/\/)?[a-zA-Z0-9]+(\.[a-zA-Z0-9]+)*/";   
  •         }   
  •         return self::get_match_result($target_str, $pattern, $isFind);   
  •     }   
  •     /**  
  •      * 功能: 用于检测email是否合法或从字符串中提取出email字符串.  
  •      * @param string $target_str  
  •      * @param boolean $isFind 是否提取出字符串  
  •      * @param boolean $isTotal是否完全匹配  
  •      * @return mixed  
  •      */  
  •     public static function email_match ($target_str, $isFind=false, $isTotal=false){   
  •         //采取的匹配模式   
  •         if ($isTotal == true){   
  •             $pattern = "/^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)*$/";   
  •         }else{   
  •             $pattern = "/[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)*/";   
  •         }   
  •         return self::get_match_result($target_str, $pattern, $isFind);         
  •     }   
  •     /**  
  •      * 功能:用于完全匹配、部分匹配或提取出钱币数字的方法.  
  •      * @param mixed $target_str  
  •      * @param boolean $isFind  
  •      * @param boolean $isTotal  
  •      * @return mixed  
  •      */  
  •     public static function money_match($target_str, $isFind=false, $isTotal=false) {   
  •         //采用完全匹配   
  •         if ($isTotal == true) {   
  •             $pattern = "/^[0-9]{1,3}(,[0-9]{3})*(\.[0-9]+)?$/";   
  •         }else{//部分匹配   
  •             $pattern = "/[0-9]{1,3}(,[0-9]{3})*(\.[0-9]+)?/";   
  •         }   
  •         return self::get_match_result($target_str, $pattern, $isFind);   
  •     }   
  •     /**  
  •      * 功能:开始匹配目标字符串动作.  
  •      *  
  •      * @param mixed $target_str  
  •      * @param string $pattern  
  •      * @param boolean $isFind  
  •      * @return mixed  
  •      */  
  •     public function get_match_result($target_str, $pattern, $isFind) {   
  •         //是否提取出匹配目标   
  •         if ($isFind == true) {   
  •             preg_match($pattern, $target_str, $result);   
  •         }else{   
  •             $result = preg_match($pattern, $target_str);   
  •         }   
  •         return $result;   
  •     }   
  •     /**  
  •      * 功能: 用于匹配测试  
  •      * @param str $target_str //$target_str = "select a, b, c, d from d";  
  •      */  
  •     public function all_match($target_str) {   
  •         $pattern = "/select(.+)from(\s[a-zA-Z0-9])/i";   
  •         preg_match($pattern, $target_str, $result);        
  •         $fields = split(",", $result[1]);   
  •         print $result[2];   
  •         print "";   
  •         return $fields;   
  •     }   
  • }  

  有什么不足之处或错误的,还请通知一声,3ku 路过的高手们了.

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-364649-1-1.html 上篇帖子: PHP 保存远程文件到服务器代码管用(包括使用getid3获取音频文件属性的用法) 下篇帖子: 我就给一个PHP逆波兰表达式的算法吧---工资计算专用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表