php 一个简单正则表达式,PHP中正则表达式回顾(3)--编写一个简单的正则表达式工具类...
跟著視頻的講解,也親手敲了這么一個(gè)正則表達(dá)式的類,感覺很不錯(cuò),真是溫故而知新,本來想把注釋寫的逼格高一點(diǎn)的,今天晚了有點(diǎn)累,先簡(jiǎn)單的寫一下,有時(shí)間了再完善完善。
class?regexTool{
//內(nèi)置一些常用的正則表達(dá)式
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}$/',
);
/*******************
*定義返回的結(jié)果,是定義是否匹配還是要得到匹配的結(jié)果
*當(dāng)為false的時(shí)候驗(yàn)證結(jié)果,是true?or?false??即是否匹配到
*****************/
private?$returnMatchResult=false;
//定義修正模式,默認(rèn)為空
private?$fixMode=null;
//匹配的結(jié)果數(shù)組
//驗(yàn)證匹配的結(jié)果,如果成功是true?否則?是false
private?$isMatch=false;
//用于存放匹配到的數(shù)據(jù)
private?$matches?=?array();
//構(gòu)造函數(shù)?兩個(gè)參數(shù)?定義返回結(jié)果類型,和修正模式
public?function?__construct($returnMatchResult=false,$fixMode=null){
$this->returnMatchResult=$returnMatchResult;//賦值給成員屬性
$this->fixMode=$fixMode;
}
/********************************
*核心匹配方法第一個(gè)參數(shù)正則表達(dá)式,第二個(gè)是目標(biāo)數(shù)據(jù)
*$pattern?如果在成員屬性$validate中,就直接使用現(xiàn)成的表達(dá)式,不存在就當(dāng)他自己是表達(dá)式
**************************/
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();
}
//根據(jù)getRegexResult,返回不同的結(jié)果
private?function?getRegexResult(){
if($this->returnMatchResult){
return?$this->matches;
}else{
return?$this->isMatch;
}
}
//切換返回的類型,比如實(shí)例化的時(shí)候返回布爾值,現(xiàn)在突然想要匹配數(shù)組了
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;
}
//下面可以定義一些常用的驗(yàn)證方法
//非空驗(yàn)證方法
public?function?noEmpty($str){
return?$this->regex('require',$str);
}
//驗(yàn)證email
public?function?isEmail($str){
return?$this->regex('email',$str);
}
//驗(yàn)證手機(jī)號(hào)
public?function?isMobile($str){
return?$this->regex('mobile',$str);
}
//用戶自定義正則表達(dá)式
public?function?check($pattern,$subject){
return?$this->regex($pattern,$subject);
}
}
//實(shí)際操作一下,效果還是棒棒噠^_^
$regex?=?new?regexTool();
$regex?->?setFixMode('U');
$isEmail=$regex?->?isEmail('adfasda@qq.com');
$isMobile=$regex?->?isMobile('56481513');
var_dump($isEmail);
echo?'
';
var_dump($isMobile);
經(jīng)過測(cè)試了,應(yīng)該沒有問題。
總結(jié)
以上是生活随笔為你收集整理的php 一个简单正则表达式,PHP中正则表达式回顾(3)--编写一个简单的正则表达式工具类...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php银行转账,php+mysqli事务
- 下一篇: 连接多个oracle数据库的配置,ora