maplephp/validate

用户友好的输入验证库。

v1.0.7 2024-09-29 13:59 UTC

This package is auto-updated.

Last update: 2024-09-29 14:01:59 UTC


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]]);