如何从URL字符串中获取域名?

3

我有几个类似的url,如下:

https://example.com/
http://example.com/

我只想要字符串 "example.com"

并且我想要移除

https:// 和 http://

所以我已经创建了这样的数组,

$removeChar = ["https://", "http://", "/"];

正确的方式是如何移除这些?


3
parse_url()是一个PHP函数,用于解析URL地址并返回其组成部分。该函数接受一个字符串类型的URL参数,并将其拆分为协议、主机、端口、路径、查询参数和片段等各个部分,并将其作为关联数组返回。URL的任何部分都可以通过返回数组中的相应键访问。例如,可以使用parse_url()函数轻松地获取URL的主机名或查询参数。 - splash58
感谢 @splash58。这真是帮了大忙。 - Keyur
对于这个特定的例子,我不确定 parse_url() 是否是最佳选项,因为它返回一个具有不可预测键数量的关联数组(即您必须测试是否存在“查询”等),考虑到您只想摆脱方案部分,在这种情况下,您必须要么删除方案部分,然后将所有其他部分拼接在一起成为字符串,我个人会选择简单的 str_replace - zoubida13
@zoubida13,那么别忘了删除`port'。 - splash58
@splash58 嗯,这就是我的观点。 - zoubida13
@zoubida13 你说得非常正确。 - Keyur
5个回答

7

我相信如果不是http,parse_url将返回空值。例如:$url =“example.com”; - Deepak Rajpal

5

这对我有用,

$http_referer = str_replace($removeChar, "", "https://example.com/");

1

try this:

$string = url ... ( your url);    
$removeChar= array("http://","https://","/");    
foreach($char in $removeChar)
{    
    $string= str_replace($char,"",$string);    
}

1

有内置函数:

$domain = parse_url($url, PHP_URL_HOST);

1
但是,如果URL的形式为http://example.com/login?test=1,那么你只会得到example.com。请参考我的评论。 - zoubida13

0
$url = "https://www.example.com";

// Remove http:// or https:// from beginning of string
$url = preg_replace('/^(http:\/\/|https:\/\/)/', '', $url);

echo $url; // Output: www.example.com

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接