在php中创建一个机制,以发现网站是否相同,即使它有http、https或两者都没有
我想用php创建一个系统,显示网站是否相同,即使协议是否存在: 示例:在php中创建一个机制,以发现网站是否相同,即使它有http、https或两者都没有,php,http,https,protocols,Php,Http,Https,Protocols,我想用php创建一个系统,显示网站是否相同,即使协议是否存在: 示例: www.facebook.com facebook.com http://facebook.com https://facebook.com http://www.facebook.com https://www.facebook.com 所有这些都是同一个网站,只是写得不同。主要组件是“facebook.com”,其他组件是使用的协议。我建议您使用。在您的情况下,您需要一个正则表达式来标识二级域(SLD)。以下表达式涵盖
www.facebook.com
facebook.com
http://facebook.com
https://facebook.com
http://www.facebook.com
https://www.facebook.com
所有这些都是同一个网站,只是写得不同。主要组件是“facebook.com”,其他组件是使用的协议。我建议您使用。在您的情况下,您需要一个正则表达式来标识二级域(SLD)。以下表达式涵盖了您的情况,但您可能希望扩展或细化顶级域(TLD)列表(
.com
,.org
,.net
,等等),使其更通用:
https?:\/\/(.*\.)?(.*)(.com|.org|.net)
此表达式将返回3个组:
- 第1组:子域
- 第2组:二级域
- 第3组:顶级域
如果您想了解有关如何在PHP中使用正则表达式的更多信息,请查看。这可能是解决您问题的好方法:
function isMatches(...$urls): bool
{
if(count($urls) <= 1) {
return true;
}
$pattern = '/^(http)(s)?(:\/\/)?(www\.)?(.*)$/';
$url = preg_replace($pattern, '$5', $urls[0]);
for($i = 0; $i < count($urls); $i++) {
if($url !== preg_replace($pattern, '$5', $urls[$i])) {
return false;
}
}
return true;
}
欢迎堆栈溢出不是代码编写服务。我们总是很乐意帮助和支持新的程序员,但你需要先帮助自己。您应该尝试自己编写代码。请阅读和阅读。我不擅长PHP,但可能有一个函数可以解析我们的框的URL。您可能遇到缺少的方案(http/https)问题,该方案与www.facebook.com将正则表达式更新为$pattern='/^(https?:\/\/)?(:\/\/)?(www\)?(.*)$/';仅包括www.facebook.com。
$result = isMatches(
'http://facebook.com',
'http://www.facebook.com',
'https://facebook.com',
'https://www.facebook.com'
); // true
$result = isMatches(
'http://facebook.com2',
'http://www.facebook.com',
'https://facebook.com',
'https://www.facebook.com'
); // false