【问题标题】:PHP: how to get subdomain: www2 or www35PHP:如何获取子域:www2 或 www35
【发布时间】:2015-12-05 00:22:21
【问题描述】:

网址:http://www2.zippyshare.com/v/hlA8HjA9/file.html

我刚刚创建了一个数据库,我知道如何在 /v/ 之后获取文件名,但现在我需要在我的数据库中添加另一个字符串。它是一个服务器。 他们有子域作为服务器,每个文件都在不同的服务器上,例如 www3.zippyshare 或 www73.zippyshare.com

现在我有这样的东西:

    $myLink = $_POST['url'];
    $var_url = parse_url($myLink);
    $var_parts = explode('.', $var_url['host']);
    $var = var_parts[0];

但链接将“v”保存到我的数据库中..

我不知道如何获取子域然后跳过 www,所以我只会将数字添加到我的数据库中。

我不确定我是否写得足够清楚,但如果有人可以帮助我,我会非常高兴。

【问题讨论】:

  • 听起来您需要一种统一的方式来存储资源的位置。我建议设计一个“统一资源定位器”语法,然后将这个创新的新“URL”完整地存储在您的数据库中。

标签: php url


【解决方案1】:

我会使用这个正则表达式:

/^(?:https?:\/\/)?([\da-z-]+)\.[a-z]+\.[a-z\.]{2,6}\/v\/[a-z0-9].+\/([a-z0-9]+\.[a-z]+)$/

在 PHP 中这样做:

$url = "http://www2.zippyshare.com/v/hlA8HjA9/file.html";
$pattern = "/^(?:https?:\/\/)www([\d0-9-]+)\.[a-z]+\.[a-z\.]{2,6}\/v\/([a-z0-9\/\.].+)$/";
preg_match($pattern, $url, $matches);

list(, $server, $file) = $matches;

然后服务器将位于$server,文件名将位于$file

证明:https://3v4l.org/hHWRm

【讨论】:

  • 您好 jankal,感谢您的帮助。有问题,因为它返回 www2。我想只得到 www 后面的数字。我需要这个来替换原始脚本,它只需要数字,例如。 2 或 72 可能是任何值,取决于 url
  • @4XM7 我刚刚编辑它只返回服务器编号 ;)
  • 好的,谢谢!现在我只需要让它与我的代码一起工作
猜你喜欢
  • 2013-11-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-10
  • 1970-01-01
  • 2021-03-22
  • 2012-01-19
  • 2011-07-14
相关资源
最近更新 更多