PHP获取域名包含路径怎么剥离_PHP域名去路径保留主域方法【技巧】-php教程

最可靠方式是用 parse_url($url, PHP_URL_HOST) 提取 host,再按需处理子域、IDN 和 IPv6;避免正则或 str_replace 硬切,注意反向代理下优先用 $_SERVER[‘SERVER_NAME’]。

PHP中用 parse_url() 提取主域名最可靠

直接用 $_SERVER['HTTP_HOST'] 或 $_SERVER['SERVER_NAME'] 拿到的只是主机名(如 example.com 或 www.example.com),但如果你手头是一个完整 URL 字符串(比如 "https://blog.example.com:8080/path/to/page?x=1#section"),必须先解析再剥离路径。此时 parse_url() 是唯一推荐方式,它能准确分离 scheme、host、port、path、query、fragment。

常见错误是用 str_replace() 或正则硬切,结果在带端口、子域、IPv6 地址(如 [::1])或特殊字符时直接崩。

  • parse_url($url, PHP_URL_HOST) 返回 host 部分,不含端口(如 blog.example.com)
  • 若需保留端口,用 parse_url($url, PHP_URL_PORT) 单独获取,再手动拼接
  • 注意:PHP_URL_HOST 对 IPv6 地址会返回带方括号的格式([2001:db8::1]),这是合规行为,别误判为异常

去掉 www 前缀但不误伤其他子域?用条件判断别硬删

很多方案直接 str_replace('www.', '', $host),这会导致 www-admin.example.com 变成 admin.example.com,完全错误。正确做法是明确判断 host 是否以 www. 开头且长度刚好比 www. 多出一个合法域名长度(即后面至少含一个点 + 二级域)。

  • 安全写法:if (substr($host, 0, 4) === 'www.' && strpos($host, '.', 4) !== false) { $host = substr($host, 4); }
  • 更健壮可配合 filter_var($host, FILTER_VALIDATE_DOMAIN, FILTER_FLAG_HOSTNAME) 验证剥离后的合法性(PHP 7.4+)
  • 别用 preg_replace('/^www\./', '', $host) —— 没加锚定边界,可能误替换路径里的 www

从 $_SERVER 获取当前请求主域要注意协议和重写影响

如果目标只是当前页面的主域名(非任意 URL),不要自己拼 $_SERVER['HTTP_HOST'] 和 $_SERVER['HTTPS'],因为反向代理(如 Nginx + Apache)下 HTTP_HOST 可能被篡改,HTTPS 环境变量也可能缺失或值为 off。

夏夕资源网专注于CMS网站模板,主流语言整站网站源码下载,网站建设相关教程分享,好用的软件素材整合下载,提供一站式便捷自助服务。
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,默认解压密码为"zy.lucklyus.top",如遇到无法解压的请联系管理员!
夏夕资源网-网站模板_免费源码_资源素材 » PHP获取域名包含路径怎么剥离_PHP域名去路径保留主域方法【技巧】-php教程
在线时间:12:00 - 22:00
关注微信公众号:微信公众号
站长邮箱:[email protected]
  • 运营天数: 1393+
  • 资源总数: 47989+
  • 用户总数: 1+
  • 今日更新: 0+
  • 访问次数: 4030482+
  • 本周更新: 0+
  • 最后更新: 2026-03-16

本站指数

×
  • 运营天数: 1393+
  • 资源总数: 47989+
  • 用户总数: 1+
  • 今日更新: 0+
  • 访问次数: 4030482+
  • 本周更新: 0+
  • 最后更新: 2026-03-16