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