一个通用的php正则表达式匹配或检测或提取特定字符类

本文介绍了一款PHP正则表达式匹配类,该类提供了一系列常用功能,如IP地址、身份证号、电话号码等的验证与提取。适用于快速集成到各种PHP应用中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    在php开发时,日常不可或缺地会用到正则表达式,可每次都要重新写,有时忘记了某一函数还要翻查手册,所以,抽空写了一个关于日常所用到的正则表达式区配类,便于随便移置调用.(^_^有点偷懒).

  1. /*/  
  2. * 类MatchAll功能:主要用于php日常所用到的几种检测匹配或提取特定字符.//  
  3. * 主要参数设置说明: $target_str 为目标字符即需要检测的字符或数字。//  
  4. * $isFind true:提取出匹配字符;false:单纯检测是否存在特定字符.  //  
  5. * $isTotal true: 完全匹配模式;false:部分匹配模式.           //  
  6. * @author: purpen                                      //  
  7. * @email: purpen.w@gmail.com                          //  
  8. * @data: 2007-07-29                                  //  
  9. */   
  10. class MatchAll {   
  11.     /**  
  12.      * 功能: 用于检测IP地址是否合法或从字符串中提取IP字符.  
  13.      *  
  14.      * @param string $target_str  
  15.      * @param boolean $isFind  
  16.      * @param boolean $isTotal  
  17.      * @return mixed  
  18.      */  
  19.     public static function IP_match($target_str, $isFind=false, $isTotal=false) {   
  20.         //采取的匹配模式   
  21.         if ($isTotal == true) {   
  22.             $pattern = "/^(\d{1,3}\.){3}\d{1,3}$/";   
  23.         }else{   
  24.             $pattern = "/(\d{1,3}\.){3}\d{1,3}/";   
  25.         }   
  26.         return self::get_match_result($target_str, $pattern, $isFind);   
  27.     }   
  28.     /**  
  29.      * 功能: 用于检测身份证号是否合法或从字符串中提取出身份证号字符.  
  30.      *  
  31.      * @param mixed $target_str  
  32.      * @param boolean $isFind  
  33.      * @param boolean $isTotal  
  34.      * @return mixed  
  35.      */  
  36.     public static function IDCard_match($target_str, $isFind=false, $isTotal=false){   
  37.         //采取的匹配模式   
  38.         if ($isTotal == true){   
  39.             $pattern = "/^(\d{18}|\d{17}X|\d{15})$/";   
  40.         }else{   
  41.             $pattern = "/(\d{18}|\d{17}X|\d{15})/";   
  42.         }   
  43.         return self::get_match_result($target_str, $pattern, $isFind);   
  44.     }   
  45.     /**  
  46.      * 功能: 用于检测电话号码是否合法或从字符长串中提取出电话号码.  
  47.      * @param mixed $target_str  
  48.      * (例如: 010-87965421、(010)87965421、87965421、0394-5568447、(0394)5568447、5568447)  
  49.      * @param boolean $isFind  
  50.      * @param boolean $isTotal  
  51.      * @return mixed  
  52.      */  
  53.     public static function phone_match($target_str, $isFind=false, $isTotal=false) {   
  54.         //采用匹配模式   
  55.         if ($isTotal == true) {   
  56.             $pattern = "/^((\(?\d{3,4}\))?|(\d{3,4}-)?)\d{7,8}$/";   
  57.         }else{   
  58.             $pattern = "/((\(?\d{3,4}\))?|(\d{3,4}-)?)\d{7,8}/";   
  59.         }   
  60.         return self::get_match_result($target_str, $pattern, $isFind);   
  61.     }    
  62.     /**  
  63.      * 功能:用于检测邮政编码是否合法或从字符长串中提取出邮政编码字符.  
  64.      *  
  65.      * @param mixed $target_str  
  66.      * @param boolean $isFind  
  67.      * @param boolean $isTotal  
  68.      * @return mixed  
  69.      */  
  70.     public static function postalcode_match($target_str, $isFind=false, $isTotal=false) {   
  71.         //采取的匹配模式   
  72.         if ($isTotal == true) {   
  73.             $pattern = "/^\d{6}$/";   
  74.         }else{   
  75.             $pattern = "/\d{6}/";   
  76.         }      
  77.         return self::get_match_result($target_str, $pattern, $isFind);   
  78.     }   
  79.     /**  
  80.      * 功能: 用于完全匹配、部队匹配或提出网络url的方法.  
  81.      * @param string $target_str  
  82.      * @param boolean $isFind 是否提取出匹配目标  
  83.      * @param boolean $isTotal 是否完全匹配  
  84.      * @return mixed  
  85.      */  
  86.     public static function neturl_match ($target_str, $isFind=false, $isTotal=false) {   
  87.         //采用的匹配模式   
  88.         if ($isTotal == true) {   
  89.             $pattern = "/^(http\:\/\/)?[a-zA-Z0-9]+(\.[a-zA-Z0-9]+)*.+$/";   
  90.         }else{   
  91.             $pattern = "/(http\:\/\/)?[a-zA-Z0-9]+(\.[a-zA-Z0-9]+)*/";   
  92.         }   
  93.         return self::get_match_result($target_str, $pattern, $isFind);   
  94.     }   
  95.     /**  
  96.      * 功能: 用于检测email是否合法或从字符串中提取出email字符串.  
  97.      * @param string $target_str  
  98.      * @param boolean $isFind 是否提取出字符串  
  99.      * @param boolean $isTotal是否完全匹配  
  100.      * @return mixed  
  101.      */  
  102.     public static function email_match ($target_str, $isFind=false, $isTotal=false){   
  103.         //采取的匹配模式   
  104.         if ($isTotal == true){   
  105.             $pattern = "/^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)*$/";   
  106.         }else{   
  107.             $pattern = "/[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)*/";   
  108.         }   
  109.         return self::get_match_result($target_str, $pattern, $isFind);         
  110.     }   
  111.     /**  
  112.      * 功能:用于完全匹配、部分匹配或提取出钱币数字的方法.  
  113.      * @param mixed $target_str  
  114.      * @param boolean $isFind  
  115.      * @param boolean $isTotal  
  116.      * @return mixed  
  117.      */  
  118.     public static function money_match($target_str, $isFind=false, $isTotal=false) {   
  119.         //采用完全匹配   
  120.         if ($isTotal == true) {   
  121.             $pattern = "/^[0-9]{1,3}(,[0-9]{3})*(\.[0-9]+)?$/";   
  122.         }else{//部分匹配   
  123.             $pattern = "/[0-9]{1,3}(,[0-9]{3})*(\.[0-9]+)?/";   
  124.         }   
  125.         return self::get_match_result($target_str, $pattern, $isFind);   
  126.     }   
  127.     /**  
  128.      * 功能:开始匹配目标字符串动作.  
  129.      *  
  130.      * @param mixed $target_str  
  131.      * @param string $pattern  
  132.      * @param boolean $isFind  
  133.      * @return mixed  
  134.      */  
  135.     public function get_match_result($target_str, $pattern, $isFind) {   
  136.         //是否提取出匹配目标   
  137.         if ($isFind == true) {   
  138.             preg_match($pattern, $target_str, $result);   
  139.         }else{   
  140.             $result = preg_match($pattern, $target_str);   
  141.         }   
  142.         return $result;   
  143.     }   
  144.     /**  
  145.      * 功能: 用于匹配测试  
  146.      * @param str $target_str //$target_str = "select a, b, c, d from d";  
  147.      */  
  148.     public function all_match($target_str) {   
  149.         $pattern = "/select(.+)from(\s[a-zA-Z0-9])/i";   
  150.         preg_match($pattern, $target_str, $result);        
  151.         $fields = split(",", $result[1]);   
  152.         print $result[2];   
  153.         print "";   
  154.         return $fields;   
  155.     }   
  156. }  

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值