hampel / validate
简单的验证器库 composer 包
Requires
- php: >=7.2.0
Requires (Dev)
- phpunit/phpunit: ~8.0
Suggests
- hampel/tlds: Retrieve TLDs directly from IANA or other sources; extends Laravel validation service with domain name and TLD validation
- hampel/validate-laravel: Extends Laravel validation service with some of the validation functions from this library
README
简单的验证器库 composer 包
由 Simon Hampel 提供
安装
推荐通过 Composer 安装 Hampel Validator
在您的 composer.json
中通过 Composer 需求此包。
:::json
{
"require": {
"hampel/validate": "^2.2"
}
}
运行 Composer 更新新的需求。
:::bash
$ composer update
注意
此库的 2.2 版本删除了 Validator::getTlds() 方法和 ManageTlds 类。我们留给实现者自行获取自己的有效 TLD 列表。
如果使用 Laravel,我们建议安装 "hampel/tlds" 包,该包使用此包并提供从 IANA 或其他来源直接检索(以及可选地缓存)TLD 列表的简单机制。TLD 包还扩展了 Laravel 验证服务,以提供用于验证域名和 TLD 的额外规则。
再次,如果使用 Laravel,我们还建议安装 "hampel/validate-laravel" 包,该包扩展 Laravel 验证服务,并基于此包中的验证规则提供额外规则(不包括 "hampel/tlds" 提供的 TLD 验证)。
使用方法
示例:
:::php
$value = "1";
$validator = new Validator;
dd($validator->isBool($value));
isEmail 对有效格式化的电子邮件地址返回 true
isBool 对 "1"、"true"、"on"、"yes"、"0"、"false"、"off"、"no" 和 "" 以及 NULL 返回 true,对其他任何值返回 false
:::php
// the following all evaluate to boolean true
$validator->isBool(true);
$validator->isBool(1);
$validator->isBool("on");
$validator->isBool("yes");
$validator->isBool(false);
$validator->isBool(0);
$validator->isBool("off");
$validator->isBool("no");
$validator->isBool("");
$validator->isBool(null);
// the following will evaluate to boolean false (ie not valid boolean values)
$validator->isBool("foo"));
$validator->isBool(2);
isIpv4 对任何有效的 IPv4 地址返回 true,包括私有和保留地址
:::php
// the following all evaluate to true
$validator->isIpv4("0.0.0.0");
$validator->isIpv4("1.1.1.1");
$validator->isIpv4("10.0.0.1");
$validator->isIpv4("192.168.0.1");
$validator->isIpv4("255.255.255.255");
isPublicIpv4 对不在私有或保留范围内的有效 IPv4 地址返回 true
:::php
// the following evaluate to true
$validator->isPublicIpv4("1.1.1.1");
$validator->isPublicIpv4("74.125.237.2");
// the following evaluate to false
$validator->isPublicIpv4("0.0.0.0");
$validator->isPublicIpv4("10.0.0.1");
$validator->isPublicIpv4("192.168.0.1");
isIpv6 对任何有效的 IPv6 地址返回 true,包括私有和保留地址
isPublicIpv6 对不被认为是不可路由的有效 IPv6 地址返回 true
isIp 对任何有效的 IPv4 或 IPv6 地址返回 true
isPublicIP 对任何公网 IPv4 或 IPv6 地址返回 true
isDomain 对任何有效构造的域名返回 true,包括使用 punycode 表示法的国际化域名
:::php
// the following evaluate to true
$validator->isDomain("example.com");
$validator->isDomain("www.example.com.au");
$validator->isDomain("www-2.example.com");
$validator->isDomain("example.foo"); // valid because we don't perform strict checking of TLDs
// the following evaluate to false
$validator->isDomain("example_1.com"); // underscores not allowed
$validator->isDomain("example."); // no TLD
$validator->isDomain("example"); // no TLD
// Supply an array of TLDs to validate against for more strict validation
$tlds = array('com', 'au', 'travel', 'xn--3e0b707e');
$validator->isDomain('example.com', $tlds)); // true
$validator->isDomain('example.foo', $tlds)); // false
isTld 当与传递给函数的数组中的 TLD 列表比较时,返回 true
您可以传递完整的域名,isTld
将检查 TLD 扩展是否有效(但不会验证域名本身)
:::php
// Supply an array of TLDs to validate against for more strict validation
$tlds = array('com', 'au', 'travel', 'xn--3e0b707e');
$validator->isTld('com', $tlds)); // true
$validator->isTld('.com', $tlds)); // true
$validator->isTld('example.com', $tlds)); // true
$validator->isTld('---.com', $tlds)); // true, since we don't validate the domain itself
$validator->isDomain('---.com', $tlds)); // false, validates both domain and TLD
$validator->isDomain('foo', $tlds)); // false
$validator->isDomain('example.foo', $tlds)); // false