maplephp / validate
用户友好的输入验证库。
v1.0.7
2024-09-29 13:59 UTC
Requires
- php: >=8.0
- maplephp/dto: ^1.0
Requires (Dev)
- maplephp/unitary: ^1.0
README
MaplePHP - Validation 是一个轻量级且强大的 PHP 库,旨在简化各种数据输入的验证。无论是验证一个值是否为有效的电子邮件或电话号码,确保字符串长度,还是执行更高级的检查,如信用卡号码和日期,MaplePHP - Validation 都提供了一种全面且直观的方法。凭借其丰富的内置验证器和简单的语法,它使得处理复杂的验证任务更加容易,从而实现更干净、更可靠的代码。
安装
composer require maplephp/validate
初始化
您始终使用静态方法 _val 初始化一个实例,后跟要验证的值。
use MaplePHP\Validate\Inp; // Validate option 1 $inp = new Inp("Lorem ipsum dolor"); var_dump($inp->length(1, 200)); // true // Validate option 2 $valid = Inp::value("Lorem ipsum dolor")->length(1, 200); var_dump($valid); // true
验证
必填字段
Inp::value("Lorem ipsum dolor")->required();
检查是否存在任何值(即使是0)
Inp::value(0)->hasValue();
检查字符串长度(最小值,最大值)
- 仅最小值:
Inp::value("Lorem ipsum dolor")->length(1);
- 最小值和最大值:
Inp::value("Lorem ipsum dolor")->length(1, 160);
检查字符串长度是否准确
Inp::value("Lorem ipsum dolor")->equalLength(10);
检查值是否等于或不等于另一个值
- 等于:
Inp::value("Lorem ipsum dolor")->equal("Lorem ipsum dolor");
- 不等于:
Inp::value("Lorem ipsum dolor")->notEqual("Lorem ipsum");
验证是否为有效的电子邮件
Inp::value("john@gmail.com")->email();
验证是否为有效的电话号码
允许数字和特殊字符("-"、"+"、" ")。
Inp::value("+46709676040")->phone();
验证瑞典个人号码(personnummer)
Inp::value("198808213412")->socialNumber();
验证瑞典组织号码
Inp::value("197511043412")->orgNumber();
验证信用卡号码
Inp::value("1616523623422334")->creditCard();
验证增值税号
Inp::value("SE8272267913")->vatNumber();
检查值是否为有效的浮点数
Inp::value("3.1415")->isFloat();
检查值是否为有效的整数
Inp::value("42")->isInt();
检查值是否为有效的数字(数值)
Inp::value("42")->number();
检查值是正数还是负数
- 正数:
Inp::value("20")->positive();
- 负数:
Inp::value("-20")->negative();
验证值是否为有效的版本号
Inp::value("1.0.0")->validVersion(true); // strict semantic versioning
比较版本与另一个版本
Inp::value("1.0.0")->versionCompare("2.0.0", '>=');
验证密码(宽松或严格)
- 宽松密码(最小字符集):
Inp::value("password123")->lossyPassword(8);
- 严格密码(要求至少一个小写字母、大写字母、数字和特殊字符)
Inp::value("Password#123!")->strictPassword(8);
验证值是否为只包含 A-Z 的字符串
- 两种情况:
Inp::value("HelloWorld")->atoZ();
- 仅小写字母:
Inp::value("helloworld")->lowerAtoZ();
- 仅大写字母:
Inp::value("HELLOWORLD")->upperAtoZ();
检查是否为有效的十六进制颜色代码
Inp::value("#000000")->hex();
检查是否为有效的日期
Inp::value("2022-02-13")->date("Y-m-d");
检查是否为有效的日期和时间
Inp::value("2022-02-13 14:15")->dateTime("Y-m-d H:i");
检查是否为有效的时间
Inp::value("14:15")->time("H:i");
检查某人是否至少达到一定年龄
Inp::value("1988-05-22")->age(18);
检查是否为有效的域名
Inp::value("example.com")->domain();
检查是否为有效的 URL(http/https 是必需的)
Inp::value("https://example.com/page")->url();
检查是否为有效的 DNS 条目
Inp::value("example.com")->dns();
验证文件和目录属性
- 检查是否为有效的文件:
Inp::value("/path/to/file.txt")->isFile();
- 检查是否为目录:
Inp::value("/path/to/directory")->isDir();
- 检查是否可写:
Inp::value("/path/to/file.txt")->isWritable();
- 检查是否可读:
Inp::value("/path/to/file.txt")->isReadable();
验证邮政编码(自定义长度)
Inp::value("12345")->zip(5);
验证值是否与模式匹配(正则表达式)
Inp::value("abc")->pregMatch("a-zA-Z");
验证值是否为数组、对象或资源
- 数组:
Inp::value([1, 2, 3])->isArray();
- 对象:
Inp::value($obj)->isObject();
- 资源:
Inp::value($resource)->isResource();
验证值是否为布尔值或可解释为布尔值
- 是布尔值:
Inp::value(true)->isBool();
- 类似布尔值(例如,“是”、“否”、“1”、“0”)
Inp::value("yes")->isBoolVal();
使用多种方法进行验证(一个或多个必须匹配)
- 验证一种方法是否通过:
Inp::value("12345")->oneOf(['isInt' => []]);
- 验证所有方法是否通过:
Inp::value("12345")->allOf(['isInt' => [], 'length' => [5]]);