首页 > 代码库 > 一个通用的php正则表达式匹配或检测或提取特定字符类
一个通用的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; } }
一个通用的php正则表达式匹配或检测或提取特定字符类
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。