【问题标题】:Get entered domainname PHP获取输入的域名 PHP
【发布时间】:2016-08-29 09:50:51
【问题描述】:

我想回显输入的域名,不添加http://www。我想从域中拆分 TLD。

如何显示这个以及什么是稳定的解决方案?

我目前有这个,但显示的内容包括 www。而且我不知道这是一个稳定的解决方案还是拆分 TLD。

<?php echo "{$_SERVER['HTTP_HOST']}\n"; ?>

使用 parse_url() 编辑:

<?php $url = "{$_SERVER['HTTP_HOST']}";

var_dump(parse_url($url));
var_dump(parse_url($url, PHP_URL_SCHEME));
var_dump(parse_url($url, PHP_URL_USER));
var_dump(parse_url($url, PHP_URL_PASS));
var_dump(parse_url($url, PHP_URL_HOST));
var_dump(parse_url($url, PHP_URL_PORT));
var_dump(parse_url($url, PHP_URL_PATH));
var_dump(parse_url($url, PHP_URL_QUERY));
var_dump(parse_url($url, PHP_URL_FRAGMENT));

?>

【问题讨论】:

标签: php


【解决方案1】:

查看parse_url(),它可以做你想要的拆分。

您可能想要做一个 substr 来摆脱 www。解析后。

其实HTTP_HOST只是域名,所以……

$domain = preg_replace("/^(www\.)?(.*)$/", '$2', $_SERVER['HTTP_HOST']);

这在某些情况下可能会被攻击者操纵,因此请确保在将其回显到页面时使用htmlentities($domain, ENT_QUOTES); 对其进行转义。

在处理 .example 或 .com 时,可以通过以下方式提取 TLD:

$tld = preg_replace("/^.*\.(.*)$/", '$1', $_SERVER['HTTP_HOST']);

如果与 .co.in 或 .co.uk 打交道,请从@Robert 链接到的问题中查看此答案:https://stackoverflow.com/a/15498686/575828

再一次,打印到页面时不要忘记转义

【讨论】:

  • 谢谢!我试过了,但我做错了。请参阅我尝试过的编辑。但是我不能拆分TLD,也不能摆脱www。你能帮我解决这个问题吗?
  • 谢谢!!我尝试了以下代码,但没有得到回应。我错过了什么? &lt;?php $domain = preg_replace("/^(www\.)?(.*)$/", "\2", $_SERVER['HTTP_HOST']); echo htmlentities($domain, ENT_QUOTES); ?&gt;
  • 对不起,我更新了 preg_replace 替换语法,它使用 $ 而不是 \
  • 太好了,完美!我唯一拥有的是,如何拆分 TLD?这样我就可以在 &lt;span class="large-text"&gt; 中显示 TLD
  • 添加了 tld 提取
猜你喜欢
  • 1970-01-01
  • 2019-01-16
  • 2016-04-09
  • 2011-07-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-10
  • 1970-01-01
相关资源
最近更新 更多