新建一个php文件regex.php,开发类
//成员属性
class regexTool {
//先自定义一些验证类别
private $validate = array(
'require' => '/.+/', //检查非空
'mobile' => '/^1(3|4|5|7|8)\d{9}$/',
'email' => '/^\w+(\.\w+)*@\w+(\.\w+)+$/'
);
private $returnMatchResult = false;//返回数据类型 即 只返回真假(false)或者同时返回数组(true)
private $fixMode = null;//修正模式
private $matches = array();//当$returnMatchResult为true将返回内容放入数组中
private $isMatch = false;//当$returnMatchResult为false时看验证是否成功
//构造函数,默认的将数据类型设为false
public function __construct($returnMatchResult = false, $fixMode = null) {
$this->returnMatchResult = $returnMatchResult;
$this->fixMode = $fixMode;
}
//用正则表达式验证输入的字符串是否符合要求
public function regex($pattern, $subject) {
if(array_key_exists(strtolower($pattern), $this->validate)) {
$pattern = $this->validate[$pattern].$this->fixMode;
}
//根据$returnMatchResult选择不同的返回类型
$this->returnMatchResult ? preg_match_all($pattern, $subject, $this->matches) : $this->isMatch = preg_match($pattern, $subject) === 1;
if($this->returnMatchResult) {
return $this->matches;
} else {
return $this->isMatch;
}
//用户中途切换$returnMatchResult即返回数据类
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);
}
}
验证工具类已开发完成,下面进行一个小的测验,新建php文件check.php:
require 'regex.php';
$regex = new regexTool(); //实例化一个对象
$regex->setFixMode('U'); //修正模式为懒惰模式
$subject = 'nihao@qq.com';
$r = $regex->regex('email',$subject);
var_dump($r);
最终结果为:bool(true),测试成功。