我已经看过很多关于这个问题的问题,但似乎都没有解决我的问题。我想创建一个函数来删除网站地址中的所有内容,域名除外。 例如,如果用户输入: http://www.stackoverflow.com/blahblahblah ,我想获得 stackoverflow ,如果用户输入 facebook.com/user/bacon,则相同我想 facebook 。
有人知道我可以删除某些字符串部分的功能或方法吗?也许它会搜索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
答案 0 :(得分:1)
使用parse_url将URL拆分为不同的部分。你需要的是主机名。然后你会想要用点分割并得到第一部分:
$url = 'http://facebook.com/blahblah';
$parts = parse_url($url);
$host = $parts['host']; // facebook.com
$foo = explode('.', $host);
$result = $foo[0]; // facebook
答案 1 :(得分:0)
使用Javascript:
document.domain.replace(".com","")
PHP:
$url = 'http://google.com/something/something';
$parse = parse_url($url);
echo str_replace(".com","", $parse['host']); //returns google
答案 2 :(得分:0)
您可以使用PHP中的parse_url
函数来准确返回您想要的内容 - see
答案 3 :(得分:0)
使用php中的parse_url方法获取domain.com,然后将replace .com与空字符串一起使用。 我的正则表达式有点生疏,但这应该有效。
$url='http://www.en.wikipedia.org';
$domain = parse_url($url, PHP_URL_HOST); //Will return en.wikipedia.org
$domain = preg_replace('\.com|\.org', '', $domain);
http://php.net/manual/en/function.parse-url.php
PHP REGEX: Get domain from URL
http://rubular.com/r/MvyPO9ijnQ //检查正则表达式
答案 4 :(得分:0)
您正在寻找有关正则表达式的信息。它有点复杂,所以要准备好阅读。在您的情况下,您最好使用preg_match
和preg_replace
。它会根据您的模式搜索匹配项,并将替换项替换为匹配项。
我从这样的模式开始:找到.com
,.net
或.org
并删除它以及之后的所有内容。然后找到最后一个.
并删除它和它前面的所有内容。最后,如果//
存在,请删除它及其前面的所有内容。
if (preg_match("/^http:\/\//i",$url))
preg_replace("/^http:\/\//i","",$url);
if (preg_match("/www./i",$url))
preg_replace("/www./i","",$url);
if (preg_match("/.com/i",$url))
preg_replace("/.com/i","",$url);
if (preg_match("/\/*$/",$url))
preg_replace("/\/*$/","",$url);
^
=在字符串的开头
i
=不区分大小写
\
=转义字符
$
=字符串的结尾
这必须围绕和调整,但它应该让你指向正确的方向。
答案 5 :(得分:-2)
这是一个非常快速的方法,但应该在PHP中做你想做的事情:
function getDomain( $URL ) {
return explode('.',$URL)[1];
}
我会在有机会的时候更新它,但基本上它会在完全停止时将URL拆分成碎片,然后返回应该是域的第二个项目。对于更长的域名,例如www.abc.xyz.com,需要更多的逻辑,但对于普通的URL,它就足够了。