Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/437.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
Javascript 如何从url获取没有TLD的主机名_Javascript_Php_Html - Fatal编程技术网

Javascript 如何从url获取没有TLD的主机名

Javascript 如何从url获取没有TLD的主机名,javascript,php,html,Javascript,Php,Html,我正在创建一个网站。每次用户上传链接时,我都需要保存链接及其名称/值。这很难解释 这是我想说的。假设用户在输入中粘贴链接https://www.google.com/链接需要保存在XML文件中。当我调用链接时: <a href="<?php whatever the php is ?>"> </a> 但并非所有链接都是相同的。 我知道这个代码不行,因为我已经试过了。 我知道正确的代码很简单,大概3行。如果你们能帮我,我会非常感激的 谢谢。解析url。获取主体

我正在创建一个网站。每次用户上传链接时,我都需要保存链接及其名称/值。这很难解释

这是我想说的。假设用户在输入中粘贴链接<代码>https://www.google.com/链接需要保存在XML文件中。当我调用链接时:

<a href="<?php whatever the php is ?>"> </a>
但并非所有链接都是相同的。 我知道这个代码不行,因为我已经试过了。 我知道正确的代码很简单,大概3行。如果你们能帮我,我会非常感激的


谢谢。

解析url。获取主体部分并用点(.)作为分隔符分解字符串

$url="https://google.com/";
$parts = parse_url($url);
$parts=explode('.',$parts['host']);
echo $parts[0]; // parts[1] contains com, parts[0] contains google
要处理包含“www”的URL,可以执行以下操作。请注意,这不适用于子域

echo getName("http://www.google.com"); //prints google

function getName($url){

    $parts = parse_url($url);
    $parts=explode('.',$parts['host']);
    $data=$parts[0]=="www"?$parts[1]:$parts[0];
    return $data;
}
要处理每个url,包括子域,我认为使用正则表达式更容易。我根据问题调整了功能以满足您的需要

function getName($url){

  $pieces = parse_url($url);
  $domain = isset($pieces['host']) ? $pieces['host'] : '';
  if (preg_match('/(?P<domain>[a-z0-9][a-z0-9\-]{1,63}\.[a-z\.]{2,6})$/i', $domain, $regs)) {
    return explode('.',$regs['domain'])[0];
  }
  return false;
}
函数getName($url){ $pieces=parse_url($url); $domain=isset($pieces['host'])?$pieces['host']:''; if(preg_match('/(?P[a-z0-9][a-z0-9\-]{1,63}\.[a-z\.]{2,6})$/i',$domain,$regs)){ 返回分解('.',$regs['domain'])[0]; } 返回false; }
此线程的可能重复可能会有所帮助。不,这不是我想要的。我知道如何理解别人在另一篇文章中的要求。。这有点不同。。并非每个链接都来自同一个网站这是一项非常困难的任务,因为域的结构方式多种多样,例如,等等。您需要创建一个函数,删除所有已知的tld,并删除任何子域(包括www)$parts将是数组(0=>“www”1=>“google”2=>“com”)并不是所有的url都有WWWEDITE函数,所以它可以用于有www和没有www的url。子域将不起作用。
echo getName("http://www.google.com"); //prints google

function getName($url){

    $parts = parse_url($url);
    $parts=explode('.',$parts['host']);
    $data=$parts[0]=="www"?$parts[1]:$parts[0];
    return $data;
}
function getName($url){

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