搜索 |
<?php
class regexTool {
private $validate = array(
'require' => '/.+/',
'email' => '/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/',
'url' => '/^http(s?):\/\/(?:[A-za-z0-9-]+\.)+[A-za-z]{2,4}(?:[\/\?#][\/=\?%\-&~`@[\]\':+!\.#\w]*)?$/',
'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;
}
}
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);
}
public function check($pattern, $subject) {
return $this->regex($pattern, $subject);
}
//......
}