gpt4 book ai didi

不需要 PHP FILTER_VALIDATE_URL TLD

转载 作者:行者123 更新时间:2023-12-04 18:06:04 25 4
gpt4 key购买 nike

我发现使用 filter_var($url, FILTER_VALIDATE_URL) 的问题是它在 $url = "http://x";

时返回 true

不需要 TLD。我该如何解决这个问题,以便需要 TLD?

最佳答案

对于 TLD 验证,您需要使用 Public Suffix List 运行的库.这里有两种不同的解决方案。

首先是 TLDDatabase ,技术上它只是 TLD 的实际数据库。

$store = new LayerShifter\TLDDatabase\Store();

$store->isICCAN('com'); // returns true
$store->isICCAN('co.uk'); // returns true
$store->isICCAN('example'); // returns false

如果您需要更智能的解决方案,我推荐TLDExtract .它是您可以用作验证器的域解析器。

$extract = new LayerShifter\TLDExtract\Extract();
$extract->setExtractionMode(Extract::MODE_ALLOW_ICCAN);

# For domain 'shop.github.com'

$result = $extract->parse('shop.github.com');
$result->getRegistrableDomain(); // will return 'github.com'
$result->getSuffix(); // will return 'com'

# For domain 'shop.github.co.uk'

$result = $extract->parse('http://shop.github.co.uk');
$result->getRegistrableDomain(); // will return 'github.co.uk'
$result->getSuffix(); // will return 'co.uk'

# For domain 'example.example'

$result = $extract->parse('https://example.example');
$result->getRegistrableDomain(); // will return NULL
$result->getSuffix(); // will return NULL

# For domain 'localhost'

$result = $extract->parse('localhost');
$result->getRegistrableDomain(); // will return NULL
$result->getSuffix(); // will return NULL

关于不需要 PHP FILTER_VALIDATE_URL TLD,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26495801/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com