<?php
header("content-type:text/html;charset=utf-8");
class regexTool{
private $validate = array(
'require' => '/.+/',
'email' => '/^\w+(\.\w+)*@\w+(\.\w+)+$/' ,
'url' => '^(https?://)?(\w+\.)+[A-Za-z]+$' ,
'currency' => '/^\d+(\.\d+)?$/' ,
'number' => '/^\d+$/' ,
'zip' => '/^\d{6}$/' ,
'integer' => '/^[-\+]?\d+$/' ,
'double' => '//^[-\+]?\d+(\.\d+)?$/' ,
'english' => '/^[A-Za-z]+$/' ,
'qq' => '/^\d{5,11}$/' ,
'mobile' => '/^1(3|4|5|7|8)\d{9}$/',
);
private $returnMatchResult = false;
private $fixMode =null;
private $matches =array();
private $isMatch =false;
public function __construct($returnMatchResult =false, $fixMode = null){
$this ->returnMatchResult =$returnMatchResult;
$this ->fixMode = $fixMode;
}
private function regex($pattern,$subject){
if(array_key_exists(strtolower($pattern),$this->validate)){
$pattern = $this->validate[$pattern].$this->fixMode;
}
$this->returnMatchResult ?
preg_match_all($pattern,$subject,$this->matches) :
$this->isMatch = preg_match($pattern,$subject) === 1;
return $this->getRegexResult();
}
private function getRegexResult(){
if($this->returnMatchResult){
return $this->matches;
}else{
return $this->isMatch;
}
}
//转换返回类型 从匹配结果-><-验证结果(bool)
public function toggleReturnType($bool =null){
if(empty($bool)){
$this ->returnMatchResult = !$this->returnMatchResult;
}else {
$this->returnMatchResult = is_bool($bool) ? $bool :(bool)$bool;
}
}
//修改修正模式
public function setFixMode($fixMode){
$this->fixMode = $fixMode;
}
//数据验证方法
//验证是否为空
public function noEmpty($str){
return $this->regex('require',$str);
}
//验证邮箱
public function isEmail($email){
return $this->regex('email',$email);
}
//验证手机号
public function isMobile($mobile){
return $this->regex('mobile',$mobile);
}
//验证QQ
public function isQQ($qq){
return $this->regex('qq',$qq);
}
//若数组上没有的话调用以下
public function check($pattern,$subject){
return $this->regex($pattern,$subject);
}
}
?>