如何从PHP中删除http://,www和斜杠?
我需要一个PHP的function,从URL产生一个纯粹的域名。 所以这个函数必须从URL中删除http://
, www
和/
(斜线)部分,如果这些部分存在的话。 以下是示例input和输出:input – > http://www.google.com/ | 输出 – > google.com
input – > http://google.com/ | 输出 – > google.com
input – > www.google.com/ | 输出 – > google.com
input – > google.com/ | 输出 – > google.com
input – > google.com | 输出 – > google.com
我检查了parse_url
函数,但没有返回我所需要的。 因为,我是PHP初学者,对我来说很难。 如果您有任何想法,请回答。
提前感谢。
$input = 'www.google.co.uk/'; // in case scheme relative URI is passed, eg, //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
与所有示例input正常工作。
$str = 'http://www.google.com/'; $str = preg_replace('#^https?://#', '', rtrim($str,'/')); echo $str; // www.google.com
有很多方法可以从一个url抓取域名,我已经从最短到最长的4条path下发。
#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
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])是英国,澳大利亚等。
试试这个,它会删除你想要的(http :: //,www和尾部斜线),但会保留其他子域名,如example.google.com
$host = parse_url('http://www.google.com', PHP_URL_HOST); $host = preg_replace('/^(www\.)/i', '', $host);