国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網站 > 建站經驗 > 正文

php可擴展的驗證類實例(可對郵件、手機號、URL等驗證)

2024-04-25 20:38:45
字體:
來源:轉載
供稿:網友

本文實例講述了php可擴展的驗證類。分享給大家供大家參考。具體分析如下:

這里介紹一個可擴展的php驗證類,

類里面可以的各類驗證可自行調整實現,現在為基本實現方式。

需要添加規則的話, 直接定義方法,方法名即為規則名稱。具體參考使用方法。

require_once('./Validator.class.php');

$data = array(

'nickname' => 'heno' ,

'realname' => 'steven',

'age' => 25,

'mobile' => '1521060426');

$validator = new Validator($data);

$validator->setRule('nickname', 'required');

$validator->setRule('realname', array('length' => array(1,6), 'required'));

$validator->setRule('age', array('required', 'digit'));

$validator->setRule('mobile', array('mobile'));

$result = $validator->validate();

var_dump($result);

var_dump($validator->getResultInfo());

Validator.class.php文件如下:

<?php

/**

* Validator 數據驗證類

* @package library

* @category library

* @author Steven

* @version 1.0

*/

/**

* Validator 數據驗證類

* @package library

* @category library

* @author Steven

* @version 1.0

*/

class Validator {

/**

* 待校驗數據

* @var array

*/

private $_data;

/**

* 校驗規則

* @var array

*/

private $_ruleList = null;

/**

* 校驗結果

* @var bool

*/

private $_result = null;

/**

* 校驗數據信息

* @var array

*/


private $_resultInfo = array();

/**

* 構造函數

* @param array $data 待校驗數據

*/

public function __construct($data = null)

{

if ($data) {

$this->_data = $data;

}

}

/**

* 設置校驗規則

* @param string $var 帶校驗項key

* @param mixed $rule 校驗規則

* @return void

*/

public function setRule($var, $rule)

{

$this->_ruleList[$var] = $rule;

}

/**

* 檢驗數據

* @param array $data

* <code>

* $data = array('nickname' => 'heno' , 'realname' => 'steven', 'age' => 25);

* $validator = new Validator($data);

* $validator->setRule('nickname', 'required');

* $validator->setRule('realname', array('lenght' => array(1,4), 'required'));

* $validator->setRule('age', array('required', 'digit'));

* $result = $validator->validate();

* var_dump($validator->getResultInfo());

* </code>

* @return bool

*/

public function validate($data = null)

{

$result = true;

/* 如果沒有設置校驗規則直接返回 true */

if ($this->_ruleList === null || !count($this->_ruleList)) {

return $result;

}

/* 已經設置規則,則對規則逐條進行校驗 */

foreach ($this->_ruleList as $ruleKey => $ruleItem) {

/* 如果檢驗規則為單條規則 */

if (!is_array($ruleItem)) {

$ruleItem = trim($ruleItem);

if (method_exists($this, $ruleItem)) {

/* 校驗數據,保存校驗結果 */

$tmpResult = $this->$ruleItem($ruleKey);

if (!$tmpResult) {

$this->_resultInfo[$ruleKey][$ruleItem] = $tmpResult;

$result = false;

}

}

continue;

}

/* 校驗規則為多條 */

foreach ($ruleItem as $ruleItemKey => $rule) {

if (!is_array($rule)) {

$rule = trim($rule);

if (method_exists($this, $rule)) {

/* 校驗數據,設置結果集 */

$tmpResult = $this->$rule($ruleKey);

if (!$tmpResult) {

$this->_resultInfo[$ruleKey][$rule] = $tmpResult;

$result = false;

}

}

} else {

if (method_exists($this, $ruleItemKey)) {

/* 校驗數據,設置結果集 */

$tmpResult = $this->$ruleItemKey($ruleKey, $rule);

if (!$tmpResult) {

$this->_resultInfo[$ruleKey][$ruleItemKey] = $tmpResult;

$result = false;

}

}

}

}

}

return $result;

}

/**

* 獲取校驗結果數據

* @return [type] [description]

*/

public function getResultInfo()

{

return $this->_resultInfo;

}

/**

* 校驗必填參數

* @param string $varName 校驗項

* @return bool

*/

public function required($varName)

{

$result = false;

if (is_array($this->_data) && isset($this->_data[$varName])) {

$result = true;

}

return $result;

}

/**

* 校驗參數長度

*

* @param string $varName 校驗項

* @param array $lengthData array($minLen, $maxLen)

* @return bool

*/

public function length($varName, $lengthData)

{

$result = true;

/* 如果該項沒有設置,默認為校驗通過 */

if ($this->required($varName)) {

$varLen = mb_strlen($this->_data[$varName]);

$minLen = $lengthData[0];

$maxLen = $lengthData[1];

if ($varLen < $minLen || $varLen > $maxLen) {

$result = true;

}

}

return $result;

}

/**

* 校驗郵件

* @param string $varName 校驗項

* @return bool

*/

public function email($varName)

{

$result = true;


/* 如果該項沒有設置,默認為校驗通過 */

if ($this->required($varName)) {

$email = trim($this->_data[$varName]);

if (preg_match('/^[-/w]+?@[-/w.]+?$/', $email)) {

$result = false;

}

}

return $result;

}

/**

* 校驗手機

* @param string $varName 校驗項

* @return bool

*/

public function mobile($varName)

{

$result = true;

/* 如果該項沒有設置,默認為校驗通過 */

if ($this->required($varName)) {

$mobile = trim($this->_data[$varName]);

if (!preg_match('/^1[3458]/d{10}$/', $mobile)) {

$result = false;

}

}

return $result;

}

/**

* 校驗參數為數字

* @param string $varName 校驗項

* @return bool

*/

public function digit($varName)

{

$result = false;

if ($this->required($varName) && is_numeric($this->_data[$varName])) {

$result = true;

}

return $result;

}

/**

* 校驗參數為身份證

* @param string $varName 校驗項

* @return bool

*/

public function ID($ID)

{

}

/**

* 校驗參數為URL

* @param string $varName 校驗項

* @return bool

*/

public function url($url)

{

$result = true;

/* 如果該項沒有設置,默認為校驗通過 */

if ($this->required($varName)) {

$url = trim($this->_data[$varName]);

if(!preg_match('/^(http[s]?::)?/w+?(/./w+?)$/', $url)) {

$result = false;

}

}

return $result;

}

}

?>

希望本文所述對大家的php程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 泗阳县| 祁门县| 香河县| 大田县| 九江县| 东光县| 仁怀市| 石棉县| 略阳县| 武平县| 怀化市| 湖北省| 睢宁县| 蛟河市| 武陟县| 曲靖市| 江津市| 武冈市| 九台市| 天峻县| 莱阳市| 刚察县| 崇义县| 耿马| 黎平县| 收藏| 定陶县| 梁河县| 青龙| 张家口市| 东城区| 南和县| 环江| 衡阳县| 垣曲县| 蓬安县| 庄河市| 南乐县| 吉首市| 临沭县| 威远县|