You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PHP中从完整URL字符串提取主URL?

在PHP中提取URL的主域名部分

嘿,这个需求其实用PHP自带的parse_url()函数就能轻松搞定,这也是最稳妥的方案——毕竟它是专门为解析URL结构设计的,比手动截取字符串靠谱多了!

方法一:使用parse_url()(推荐)

parse_url()会把完整URL拆分成多个组成部分,我们只需要取出**协议(scheme)和域名(host)**拼接起来就行:

$fullUrl = 'https://www.website.com/b/vIGmD7VS/team-to-do';
// 解析URL,得到各部分数组
$parsedUrl = parse_url($fullUrl);
// 拼接主URL
$mainUrl = $parsedUrl['scheme'] . '://' . $parsedUrl['host'];

echo $mainUrl; // 输出:https://www.website.com

处理带端口的URL

如果你的URL包含端口号(比如https://www.website.com:8080/path),可以判断并加上端口:

$fullUrl = 'https://www.website.com:8080/b/vIGmD7VS/team-to-do';
$parsedUrl = parse_url($fullUrl);

$mainUrl = $parsedUrl['scheme'] . '://' . $parsedUrl['host'];
// 如果存在端口,追加到主URL后
if (isset($parsedUrl['port'])) {
    $mainUrl .= ':' . $parsedUrl['port'];
}

echo $mainUrl; // 输出:https://www.website.com:8080

方法二:手动字符串截取(不推荐)

如果你不想用内置函数,也可以通过字符串定位截取,但这种方法对特殊URL结构兼容性较差,比如遇到带用户名密码的URL(https://user:pass@website.com)就会出错,仅作参考:

$fullUrl = 'https://www.website.com/b/vIGmD7VS/team-to-do';
// 找到"//"之后的第一个"/"的位置
$pos = strpos($fullUrl, '/', strpos($fullUrl, '//') + 2);
// 截取从开头到该位置的内容,如果没找到就返回原URL
$mainUrl = $pos !== false ? substr($fullUrl, 0, $pos) : $fullUrl;

echo $mainUrl; // 输出:https://www.website.com

总之,优先选择parse_url()的方案,它能处理绝大多数URL场景,避免手动截取的各种坑。

内容的提问来源于stack exchange,提问作者Tejas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:57:54