我正在创建一个网站。每次用户上传链接时,我都需要保存链接及其名称/值。这很难解释。
这就是我想说的话。让我们说用户在输入中粘贴一个链接。 https://www.google.com/
该链接需要保存在XML文件中。当我拨打链接时:
<a href="<?php whatever the php is ?>"> </a>
我也想叫这个名字:
<a href="<?php whatever the php is ?>">Google</a>
我想提取&#34; google&#34;来自&#34; https://www.google.com/&#34;
我知道我可以使用:
str_replace(' ', '', )
但并非所有链接都是相同的。 我知道这段代码不会起作用,因为我已经尝试过了。 我知道正确的代码很简单可能是3行。如果你们能帮助我,我真的很感激。
谢谢。
答案 0 :(得分:2)
解析网址。获取主机部分并使用点(。)作为分隔符来爆炸字符串。
$url="https://google.com/";
$parts = parse_url($url);
$parts=explode('.',$parts['host']);
echo $parts[0]; // parts[1] contains com, parts[0] contains google
要使用包含“www”的网址,您可能会执行此类操作。请注意,这不适用于子域。
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;
}
要使用每个网址,包括子网域,我认为使用正则表达式更容易。我根据this问题修改了功能,以满足您的需求。
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;
}