我已经看到了关于这个确切主题的一堆问题,但似乎没有一个能够解决我的问题。我想创建一个功能,将删除网站地址的所有内容,除了域名。 例如,如果用户输入:我想计算器,并以同样的方式,如果用户输入facebook.com/user/bacon我想Facebook的。在PHP中删除字符串的某些部分
有谁知道一个函数或方法,我可以删除某些部分的字符串?也许它会搜索http,当发现它会删除一切,直到//然后它会搜索www,如果发现它会删除所有东西,直到。然后它将所有内容保存到下一个点,在那里删除它后面的所有内容?现在看,这可能会导致网站出现问题http://www.en.wikipedia.org,因为我只剩下en。
任何想法(最好在PHP中,但也欢迎JavaScript)?
编辑1: 多亏了很好的意见,我想我已经能够制定出一个函数,做什么,我想:
function getdomain($url) {
$parts = parse_url($url);
if($parts['scheme'] != 'http') {
$url = 'http://'.$url;
}
$parts2 = parse_url($url);
$host = $parts2['host'];
$remove = explode('.', $host);
$result = $remove[0];
if($result == 'www') {
$result = $remove[1];
}
return $result;
}
它并不完美,至少考虑到子域,但我认为有可能对此做些事情。也许在结尾添加第二个if语句来检查数组的长度。如果它大于2,则选择项目nr1而不是项目nr0。这显然会给我使用.co.uk的任何域名带来麻烦(因为那会长树项目,但我不想返回co)。我会尽力解决这个问题,看看我想出了什么。如果你们有些PHP大师可以看一下,我会很高兴。我并不熟练或经历任何的你...:P
没有直接回答你的问题(因为它看起来像一个[XY问题](http://www.perlmonks.org/index.pl?node_id=542341)),为什么不使用[parse_url函数] (http://php.net/manual/en/function.parse-url.php)? – kojiro 2013-02-13 18:17:36
好的,谢谢。我试着寻找答案,但只发现有人想分裂让我们说一个字符串,其中包含预设的东西。我不知道在php中有一个函数做了我想要的。非常感谢! :) – Aleksander 2013-02-13 18:19:38
它必须是一个可以访问当前[tld](https://en.wikipedia.org/wiki/Top-level_domain)或[公共后缀列表](https)列表的例程://en.wikipedia.org/wiki/Public_Suffix_List),以正确分析实际的域名部分,你感兴趣的地方开始。 – 2013-02-13 18:21:43