一个通用的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\:\/\/)?+(\.+)*.+$/";
[*] }else{
[*] $pattern = "/(http\:\/\/)?+(\.+)*/";
[*] }
[*] 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 = "/^+(\.+)*@+(\.+)*$/";
[*] }else{
[*] $pattern = "/+(\.+)*@+(\.+)*/";
[*] }
[*] 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 = "/^{1,3}(,{3})*(\.+)?$/";
[*] }else{//部分匹配
[*] $pattern = "/{1,3}(,{3})*(\.+)?/";
[*] }
[*] 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)/i";
[*] preg_match($pattern, $target_str, $result);
[*] $fields = split(",", $result);
[*] print $result;
[*] print "";
[*] return $fields;
[*] }
[*]}
有什么不足之处或错误的,还请通知一声,3ku 路过的高手们了.
页:
[1]