【问题标题】:Getting 2 last elements of a url address获取 url 地址的最后 2 个元素
【发布时间】:2015-04-19 14:30:22
【问题描述】:

我正在尝试仅访问站点名称和域,例如在 images.google.com/thisIsJustAnExample 的情况下,它将返回 google.com。 这就是我试图做的,

  $url = 'https://images.google.com/thisIsJustAnExample';
  $zobrazeni = array();
  $zobrazeni = parse_url($url);
  $zobrazeni["host"] = explode(".", $zobrazeni["host"]);
  $zobrazeni["host"] = $zobrazeni["host"][count($zobrazeni["host"])-2] .".". $zobrazeni["host"][count($zobrazni["host"])-1];

这是我得到的错误:

注意:未定义的偏移量:C:\xampp\htdocs\retezce.php 第 25 行中的 -1

注意:未定义变量:C:\xampp\htdocs\retezce.php 第 25 行中的 zobrazni

注意:未定义的偏移量:C:\xampp\htdocs\retezce.php 第 25 行中的 -1

【问题讨论】:

  • ,google.com 中的最后两个元素是什么意思?
  • 如果我有 url:google.com/… 我想获取 google.com
  • @Mark,parse_url 不处理子域,对于您的场景,您可以使用 Purl 请参见此处github.com/jwage/purl
  • 您所追求的是网址的domaintop-level-domain。您想为xxx.co.uk 地址获得什么? xxxco.uk?

标签: php offset explode


【解决方案1】:

只需使用此代码,它应该打印“google”。“com”如果这就是你的意思。 请记住count($verb)(如果$verbarray)将返回数组中对象的数量。

$url = "http://stackoverflow.com/questions/29731201/getting-2-last-elements-of-a-url-address/29731258#29731258";
$verbs = explode('.', $url);

$domainName = explode('/', $verbs[count($verbs)-2]);
$domainExt = explode('/', $verbs[count($verbs)-1]);

echo $domainName[2] . "." . $domainExt[0];

【讨论】:

  • 这看起来很有希望,但“images.google.com/thisIsJustAnExample”的结果是“google.com/thisIsJustAnExample”
  • 太棒了!最后一个问题是更长的链接。 “http://”也出现在链接中。我尝试复制此站点 stackoverflow.com/question.... 的 URL,结果是“http://stackoverflow.com”
  • 感谢 Danny,它可以工作,但是当我尝试复杂的 url 时它会出现一些问题。
【解决方案2】:

有几种方法可以做到这一点,但其中一种方法是:

  $url = 'https://images.google.com/thisIsJustAnExample';
  $zobrazeni = array();
  $zobrazeni = parse_url($url);
  $zobrazeni = explode(".", $zobrazeni["host"]);
  $zobrazeni =  array_reverse($zobrazeni);
  $zobrazeni = $zobrazeni[1] . ' .' . $zobrazeni[0];

或者您可以获取数组的长度并使用它而不是尝试减去 2。

【讨论】:

  • 非常感谢。简单易行。
猜你喜欢
  • 2011-03-09
  • 2016-02-26
  • 2012-04-02
  • 2010-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-22
相关资源
最近更新 更多