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

 

在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;   
    }   
}

转载于:https://www.cnblogs.com/Siegel/p/6852678.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 使用 PHP正则表达式函数 preg_match() 可以匹配字符串。以下是一个示例: ```php $str = "Hello, World!"; $pattern = "/\bWorld\b/"; if (preg_match($pattern, $str)) { echo "Match found!"; } else { echo "Match not found."; } ``` 这段代码将输出 "Match found!",因为 $str 中包含单词 "World",并且 $pattern 中使用了单词边界 \b 进行匹配。请注意,正则表达式模式需要用斜杠 / 包围。 ### 回答2: PHP正则表达式是一种强大的字符串匹配工具,能够根据特定模式来匹配和处理字符串。在PHP中,可以使用preg_match函数来进行正则表达式的匹配。 preg_match函数接受三个参数,分别是正则表达式模式、目标字符串和可选的匹配结果输出变量。函数会在目标字符串中查找是否存在与正则表达式模式匹配的内容,如果匹配成功,则返回true,否则返回false。 正则表达式模式由特定字符和符号组成,用于描述需要匹配的字符串规则。例如,使用\d可以匹配一个数字字符,\w可以匹配一个字母数字字符。 对于复杂的正则表达式模式,我们可以使用特定字符、量词和分组等特性来实现更准确的匹配。例如,使用[a-z]可以匹配一个小写字母,\d{2,4}可以匹配2到4个数字。 在进行匹配时,可以使用捕获组来提取感兴趣的部分字符串。捕获组是通过在正则表达式模式中使用小括号来定义的,使用圆括号包裹的部分将被定义为一个捕获组。 除了preg_match函数,PHP还提供了许多其他与正则表达式相关的函数,如preg_replace、preg_split等,用于替换、拆分和其他正则表达式操作。 总结来说,PHP正则表达式是一种强大的字符串匹配工具,可以根据特定的模式来匹配和处理字符串。在应用中,我们可以利用它来实现各种字符串操作,如验证、替换、拆分等。 ### 回答3: 在PHP中,正则表达式是一种强大的工具,用于匹配和处理字符串。它可以用于各种字符串操作,例如验证输入,提取数据以及替换特定字符串。 使用正则表达式的基本步骤是: 1. 定义正则表达式模式,它由特定字符和元字符组成,用于匹配目标字符串。 2. 使用preg_match函数进行匹配,该函数用于判断目标字符串是否与正则表达式模式匹配。如果匹配成功,则返回1;否则返回0。 3. 可以使用 preg_match_all函数来匹配目标字符串中的所有模式出现。 4. 使用preg_replace函数实现字符串中的替换操作,将匹配到的部分替换为指定的字符串。 5. 使用preg_split函数按照正则表达式模式分割字符串。 例如,如果我们想匹配一个字符串中是否包含数字,可以使用正则表达式模式"/\d/",其中\d表示数字。代码如下: ```php $str = "Hello,123 world"; if(preg_match("/\d/", $str)){ echo "字符串中包含了数字"; } else { echo "字符串中不包含数字"; } ``` 输出结果为:字符串中包含了数字。 以上是关于PHP正则表达式匹配字符串的基本操作,根据具体的需求和匹配规则,可以使用更复杂的模式和函数来实现更精确的匹配和处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值