【问题标题】:PHP Remove Domain Name Extension from StringPHP从字符串中删除域名扩展名
【发布时间】:2011-01-21 19:42:11
【问题描述】:

我想知道使用 PHP 从域中删除某些内容的最佳方法。

例如:

http://mydomain.com/”变成“mydomain

http://mydomain.co.uk/”变成“mydomain

我正在寻找一个快速功能,可以让我删除以下内容:

“http://”、“www.”、“.com”、“.co.uk”、“.net”、“.org”、“/”等

提前致谢:)

【问题讨论】:

  • [快速说明] 我将使用一个字符串/变量来存储域 ($var = "domain.com/";)。
  • 只是出于好奇,你为什么要这么做?
  • 这只是为了在我正在处理的新项目的数据库中添加信息。当我在个人资料页面等中打印数据时,我不想使用不正确的域扩展名,所以我想自己表达它们。

标签: php string function dns


【解决方案1】:

要获取 URL 的主机部分,请使用 parse_url:

$host = parse_url($url, PHP_URL_HOST);

其余的请参见my answer to Remove domain extension

【讨论】:

    【解决方案2】:

    你能用字符串替换吗?

    str_replace('http://', '');
    

    这将从字符串中删除“http://”。您首先要做的就是获取页面的当前 url 并将其传递给您想要的任何字符串替换..

    【讨论】:

    • 我想剥离“http://”和任何域扩展名,例如“.com”或“.net”。谢谢:)
    【解决方案3】:

    我会用 str_replace 替换“http://”,然后分解完整域名中的句点。

    【讨论】:

    • Gumbo 在上面解释得更好,继续。
    【解决方案4】:

    您可以结合使用 parse_url() 和 str_* 函数,但如果您需要从结果中剪切域区域(.com、.net 等),您将永远不会得到正确的结果。

    例如:

    parse_url('http://mydomain.co.uk/', PHP_URL_HOST); // will return 'mydomain.co.uk'
    

    您需要使用使用Public Suffix List 的库来处理此类情况。我推荐TLDExtract

    这是一个示例代码:

    $extract = new LayerShifter\TLDExtract\Extract();
    
    $result = $extract->parse('mydomain.co.uk');
    $result->getHostname(); // will return 'mydomain'
    $result->getSuffix(); // will return 'co.uk'
    $result->getFullHost(); // will return 'mydomain.co.uk'
    $result->getRegistrableDomain(); // will return 'mydomain.co.uk'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-01
      • 2023-03-07
      • 1970-01-01
      • 2012-08-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多