php - preg_replace 和 regexp 获取域
问题描述
我有一个从 HTTP_HOST 返回干净域的代码
preg_replace('#^(.*\.)?(.*\..*)$#', '$2', $_SERVER['HTTP_HOST'])
但如果域类似于 somedomain.co.uk - 它只返回 co.uk。在这种情况下,您能帮我重新制作正则表达式以返回正确的域吗?非常感谢!
解决方案
你应该试试这个:
preg_replace('#^(https?:\/\/)?(www\d?\.)?([^\/\?]+)(.*)#', '$3', $url)
它适用于以下情况:
<?php
$urls = [
'https://www.somedomain.co.uk',
'http://www.somedomain.co.uk',
'www.somedomain.co.uk/something',
'www.somedomain.co.uk?q=1',
'www2.somedomain.co.uk/something',
'somedomain.co.uk',
'192.168.1.1/something?q=1&x=2',
];
foreach($urls as $url) {
echo preg_replace('#^(https?:\/\/)?(www\d?\.)?([^\/\?]+)(.*)#', '$3', $url) . '<br>';
}
推荐阅读
- vba - 使用提交按钮从 word 中通过电子邮件发送一页的代码
- typescript - Microsoft BotBuilder - TSError:⨯ 无法编译 TypeScript:src/app.ts(10,24):错误 TS2307:找不到模块“botbuilder-teams”
- html - 如何为“剩余天数”创建仅 CSS 的进度条?
- mysql - 数据库设计两张表 vs 联表,哪个更好
- python - Django 无法删除自定义字段类;makemigrations 抛出 AttributeError
- html - 位置:与垂直滚动相比,水平滚动的粘性行为不同?
- python - Python函数返回空数据框
- python - 返回协程管道输出的生成器
- javascript - Javascript Countdown 不在 C# Foreach 循环内迭代
- flutter - Flutter TextField 禁用边框