Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从完整URL获取域名_Php_Url - Fatal编程技术网

Php 从完整URL获取域名

Php 从完整URL获取域名,php,url,Php,Url,假设有人输入如下URL: http://i.imgur.com/a/b/c?query=value&query2=value 我想返回:imgur.com 不i.imgur.com 这是我现在掌握的代码 $sourceUrl = parse_url($url); $sourceUrl = $sourceUrl['host']; 但是这会返回i.imgur.com检查下面的代码,它应该可以很好地完成工作 <?php function get_domain($url) { $

假设有人输入如下URL:

http://i.imgur.com/a/b/c?query=value&query2=value
我想返回:
imgur.com

i.imgur.com

这是我现在掌握的代码

$sourceUrl = parse_url($url);
$sourceUrl = $sourceUrl['host'];

但是这会返回
i.imgur.com
检查下面的代码,它应该可以很好地完成工作

<?php

function get_domain($url)
{
  $pieces = parse_url($url);
  $domain = isset($pieces['host']) ? $pieces['host'] : $pieces['path'];
  if (preg_match('/(?P<domain>[a-z0-9][a-z0-9\-]{1,63}\.[a-z\.]{2,6})$/i', $domain, $regs)) {
    return $regs['domain'];
  }
  return false;
}

print get_domain("http://mail.somedomain.co.uk"); // outputs 'somedomain.co.uk'

?>

使用以下方法:

$uri = "$_SERVER[REQUEST_URI]";<br>
print($uri);
$uri=“$\u服务器[请求\u uri]”
打印(uri);
例如:

http://exemple.com/?directory<br>
Result:
/?diretory
http://exemple.com/?directory
结果: /?董事会

命令获取目录而不是域。

如果您只需要域名,请尝试以下操作:

$domain = $_SERVER['SERVER_NAME'];

echo $domain;

你需要使用这个软件包。是的,您可以在parse_url()或regex周围使用字符串函数,但它们会在复杂的url中产生错误的结果

我建议进行域解析,以下是示例代码:

$url = 'http://i.imgur.com/a/b/c?query=value&query2=value';

parse_url($url, PHP_URL_HOST); // will return 'i.imgur.com'

$extract = new LayerShifter\TLDExtract\Extract();
$result = $extract->parse($url);
$result->getFullHost(); // will return 'i.imgur.com'
$result->getSubdomain(); // will return 'i'
$result->getRegistrableDomain(); // will return 'imgur.com'
$result->getSuffix(); // will return 'com'

我在publicsuffix.org上找到了一个非常有用的库, 是一个用PHP实现的基于公共后缀列表的域解析器


字符串(16)“scottwills.co.uk”


下面的代码应该非常适合这项工作

function get_domain($url){
  $charge = explode('/', $url);
  $charge = $charge[2]; //assuming that the url starts with http:// or https://
  return $charge;
}

echo get_domain('http://www.example.com/example.php');

那么以“这是一个获取域名实名的方法”开头的那一个呢!非常感谢。我认为这是最好的答案。这有点棘手。它最终会为一级CCTLD的子域返回不正确的结果,如
blah.blah.de
。但是如果不使用公共后缀列表,就无法解决这个问题。这对
www.domain.com
-parse_url()不起作用。parse_url()需要一个协议(http://)来定义主机,否则它只是路径。在第一个下面需要第二个条件:
$domain=(空($domain)和&isset($pieces['path'])$片段['path']:$domain
@stanev01这不起作用,它是从url获取主机名的函数。原始url是您的url和$store\u url返回主机url。问题涉及用户输入的url,而不是他们访问的地址。
 <?php 
 // this will do the job

 require_once '../vendor/autoload.php';

 $pslManager = new Pdp\PublicSuffixListManager();
 $parser = new Pdp\Parser($pslManager->getList());
 var_dump($parser->getRegistrableDomain('www.scottwills.co.uk'));
 ?>
function get_domain($url){
  $charge = explode('/', $url);
  $charge = $charge[2]; //assuming that the url starts with http:// or https://
  return $charge;
}

echo get_domain('http://www.example.com/example.php');