particle\validator是乙個小巧優雅的實用的php驗證類庫,提供了乙個非常簡潔的api。它無需依賴其他元件,提供友好的文件,並且有利於擴充套件。
composer require particle/validator
在使用之前請確保在專案中引入了 vendor/autoload.php 檔案
code:
1. <?php
2. use particle\validator\validator;
3. require './vendor/autoload.php';
4. $v = new validator;
5. $v->required('first_name')->lengthbetween(2, 30)->alpha();
6. $v->required('last_name')->lengthbetween(2, 40)->alpha();
7. $data = [
8. 'first_name' => 'john',
9. 'last_name' => 'doe',
10. ];
11. $result = $v->validate($data);
12. $result->isvalid(); // 返回bool(true or false)
這個方法是內建的,主要用於檢測某個key的值,如果希望檢測的某個值可能為空,而希望驗證通過,則我們可以設定該方法的第三個引數為true。(預設值為false 代表不能為空值)。其中 required 和 optional 的區別主要是如下 required 是驗證的值必須存在;而 optional 是可選的,如果key存在,則驗證,不存在,則不用驗證。
code:
1. // 基本驗證
2. $values = [
3. 'user' => [
4. 'username' => 'bob',
5. ]
6. ];
7. $v = new validator;
8. $v->required('user.username')->alpha();
9. $result = $v->validate($values);
10. $result->getvalues() === $values; // bool(true)
allowempty(callable $callback)是否可以為空值,true則通過 反之亦然
code:
1. $v = new validator;
2. // 如果使用者名稱存在,則驗證通過
3. $v->required('name')->allowempty(function (array $values) );
6. $v->validate(['namepresent' => true, 'name' => 'john'])->isvalid(); // true
7. $v->validate(['namepresent' => true])->isvalid(); // true
8. $v->validate(['namepresent' => false])->isvalid(); // false
alnum($allowwhitespace = false) 包含數字和字母,不允許空格,(a-z, a-z, 0-9)
alpha($allowwhitespace = false) 驗證的字元包含 (a-z, a-z),不允許空格。
between($min, $max) 驗證必須在乙個數值範圍,如(12, 34)。
bool() 布林boolean值驗證。
callback(callable $callable) **驗證。
creditcard() 驗證信用卡,驗證之前必須先安裝 composer require byrokrat/checkdigit。
datetime($format = null) 驗證日期。
digits() 一串數字字串驗證,不包含小數。
each(callable $callable) 遍歷驗證。
email() 驗證郵箱。
equals($value) 驗證是否相等。
float()驗證浮點數。
greaterthan($value) 大於某個值。
hash($hashalgorithm, $allowuppercase = false) md5 sha1等驗證。
inarray(array $array, $strict = true) 驗證是否屬於陣列範圍內
integer($strict = false) 整數驗證。
isarray() 陣列驗證。
json()json格式字串驗證。
length($length) 長度驗證。
lengthbetween($min, $max) 長度範圍驗證。
lessthan($value) 小於驗證。
numeric() 驗證浮點數和整數。
phone($countrycode) 驗證手機號,使用之前先安裝 composer require giggsey/libphonenumber-for-php。
regex($regex) 正則驗證。
required(callable $callback) 必須存在,不能為空。
string() 字串驗證。
url($schemes = ) 驗證url。
uuid($version = uuid::valid_format) 驗證uuid。
提示資訊覆蓋
particle\validator為預設規則提供了預設的訊息提示,當然你也可以為驗證規則設定特定的訊息提示以覆蓋預設值。
code:
1. $v = new validator;
2. $v->required('first_name')->lengthbetween(0, 5);
3. $v->required('last_name')->lengthbetween(0, 5);
4. $v->overwritedefaultmessages([
5. lengthbetween::too_long => 'it\'s too long, that value'
6. ]);
7. $v->overwritemessages([
8. 'first_name' => [
9. lengthbetween::too_long => 'first name is too long, mate'
10. ]
11. ]);
12. $result = $v->validate([
13. 'first_name' => 'this is too long',
14. 'last_name' => 'this is also too long',
15. ]);
16. var_dump($result->getmessages());
驗證庫一般都可以根據場景來使用不同的驗證,比如插入資料和更新資料的區別
code:
1. $v = new validator;
2. // 定義乙個插入時候的驗證規則
3. $v->context('insert', function(validator $context) );
6. // 定義乙個更新時候的驗證規則
7. $v->context('update', function(validator $context) );
10. $v->validate(, 'update')->isvalid(); // bool(true)
11. $v->validate(, 'insert')->isvalid(); // bool(false), because first_name is required.
很多時候,我們的專案都是進行分層開發的,例如常見的mvc,則我們可以在分層專案中呼叫該驗證類,示例如下:
code:
1. use particle\validator\validationresult;
2. use particle\validator\validator;
3. class myentity
4. 11. public function validate()
16. protected function values()
17.
22. }
23. // in a controller:
24. $entity = new entity();
25. $entity->setid($this->getparam('id'));
26. $result = $entity->validate();
27. if (!$result->isvalid())
PHP正則驗證類
驗證類 lastmodify 2015 12 19 author wuheng class verify 數字驗證 param flag int是否是整數,float是否是浮點型 public static function isnum str,flag float else 名稱匹配,如使用者名稱...
PHP驗證碼類
php驗證碼類 如果不適用指定的字型,那麼就用imagestring 函式,如果需要遇到指定的字型,就要用到imagettftext 函式。字型的位置在c盤下windows fonts.verificationcode.class.php class verificationcode 生成驗證碼 p...
php常用表單驗證類
頁面作用 常用表單驗證類 class class post str true false 驗證是否為指定長度數字 function fun text2 num1,num2,str i str true false 驗證是否為指定長度漢字 function fun font num1,num2,str...