我需要一个从URL生成纯域名的php函数。因此,如果这些部分存在,则必须从URL中删除http://
,www
和/
(斜线)部分。以下是示例输入和输出: 输入 - >http://www.google.com/ |输出 - > google.com
输入 - >http://google.com/ |输出 - > google.com
输入 - > www.google.com/ |输出 - > google.com
输入 - > google.com/ |输出 - > google.com
输入 - > google.com |输出 - > google.com
我检查了parse_url
函数,但没有返回我所需要的。 因为,我是PHP的初学者,对我来说很困难。如果您有任何想法,请回答。
Thanx提前。如何从PHP中删除http://,www和斜杠?
回答
$input = 'www.google.co.uk/';
// in case scheme relative URI is passed, e.g., //www.google.com/
$input = trim($input, '/');
// If scheme not included, prepend it
if (!preg_match('#^http(s)?://#', $input)) {
$input = 'http://' . $input;
}
$urlParts = parse_url($input);
// remove www
$domain = preg_replace('/^www\./', '', $urlParts['host']);
echo $domain;
// output: google.co.uk
与所有示例输入正常工作。
以及如果它不是www而是secure.google.com呢? – Gordon 2012-02-20 16:18:55
Yeap,这就是我需要的。非常感谢! – JohnUS 2012-02-20 16:23:16
@戈登:问题陈述'必须删除http://,www和/'。任意子域名不是其中的一部分,如果他需要,它不会起作用。 – webbiedave 2012-02-20 16:24:47
试试这个,它会删除你想要的东西(HTTP // ::,www和斜线),但将保留其他子域,如example.google.com
$host = parse_url('http://www.google.com', PHP_URL_HOST);
$host = preg_replace('/^(www\.)/i', '', $host);
if (!preg_match('/^http(s)?:\/\//', $url))
$url = 'http://' . $url;
$host = parse_url($url, PHP_URL_HOST);
$host = explode('.', strrev($host));
$host = strrev($host[1]) . '.' strrev($host[0]);
这将返回二级域名,虽然这将是无用的,比如.co.uk域名,所以你可能需要做更多的检查,并包括其他部件,如果strrev($主机[0])是澳大利亚,澳大利亚等。
有很多方法抓住一个网址的域名我已经从最短到最长的四种方式发布。
#1
function urlToDomain($url) {
return implode(array_slice(explode('/', preg_replace('/https?:\/\/(www\.)?/', '', $url)), 0, 1));
}
echo urlToDomain('http://www.example.com/directory/index.php?query=true');
#2
function urlToDomain($url) {
$domain = explode('/', preg_replace('/https?:\/\/(www\.)?/', '', $url));
return $domain['0'];
}
echo urlToDomain('http://www.example.com/directory/index.php?query=true');
#3
function urlToDomain($url) {
$domain = preg_replace('/https?:\/\/(www\.)?/', '', $url);
if (strpos($domain, '/') !== false) {
$explode = explode('/', $domain);
$domain = $explode['0'];
}
return $domain;
}
echo urlToDomain('http://www.example.com/directory/index.php?query=true');
#4
function urlToDomain($url) {
if (substr($url, 0, 8) == 'https://') {
$url = substr($url, 8);
}
if (substr($url, 0, 7) == 'http://') {
$url = substr($url, 7);
}
if (substr($url, 0, 4) == 'www.') {
$url = substr($url, 4);
}
if (strpos($url, '/') !== false) {
$explode = explode('/', $url);
$url = $explode['0'];
}
return $url;
}
echo urlToDomain('http://www.example.com/directory/index.php?query=true');
的功能上述所有返回相同的响应:example.com
$str = 'http://www.google.com/';
$str = preg_replace('#^https?://#', '', rtrim($str,'/'));
echo $str; // www.google.com
- 1. 从sqlite中删除斜杠
- 2. 如何从URL中删除反斜杠?
- 3. 如何从MySQL中删除双斜杠?
- 4. .htaccess - 删除www,强制https,删除php并删除尾部斜杠
- 5. .htaccess,强制斜杠和www
- 6. 如何删除http:// www。 from php array
- 7. 删除反斜杠
- 8. 通过.htaccess或PHP删除URL中的重复斜杠和反斜杠
- 9. 从Sys.getenv()中删除双斜杠
- 10. 从URL中删除的斜杠
- 11. 从URL中删除拖尾斜杠
- 12. 从date()中删除反斜杠
- 13. 删除HTTP:// WWW和从字符串
- 14. 如何删除斜杠后的空格“/”
- 15. 如何使用javascript删除正斜杠
- 16. 如何从C中的字符串中删除斜杠
- 17. 如何删除并重定向所有.php扩展名,重定向“www”并删除结尾的斜杠?
- 18. TinyMCE删除双斜杠
- 19. URL斜杠被删除
- 20. json_encode删除反斜杠
- 21. 删除str_replace反斜杠
- 22. 删除反斜杠与tr
- 23. lxml删除双斜杠iframe
- 24. htaccess删除尾部斜杠
- 25. iPhone:从NSString删除单斜杠
- 26. 从字符串中删除尾部斜杠PHP
- 27. htaccess从多个正斜杠的URL中删除.php扩展
- 28. 从PHP中删除所有反斜杠urldecoded字符串
- 29. 从URL中删除.php并强制结尾斜杠/
- 30. PHP从JSON中删除反斜杠字符
这是几十个问题的副本。 – tplaner 2012-02-20 16:08:57
parse_url将保留完整的域名,包括子域名,例如它并没有把www.google.com变成google.com – Gordon 2012-02-20 16:09:55
第二个最高评分的答案在这里(http://stackoverflow.com/questions/276516/parsing-domain-from-url-in-php)可能是最简单的赌注。 – BenOfTheNorth 2012-02-20 16:18:25