php正则表达式之用于表单验证的工具类开发

新建一个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),测试成功。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值