Как удалить http: //, www и slash из URL-адреса в PHP?

Мне нужна функция php, которая генерирует чистое имя домена из URL. Таким образом, эта функция должна быть удалена из http:// , www и / (slash) частей из URL, если эти части существуют. Вот пример ввода и вывода: Input -> 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 заранее.

Solutions Collecting From Web of "Как удалить http: //, www и slash из 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 

Правильно работает со всеми вашими примерами ввода.

 $str = 'http://www.google.com/'; $str = preg_replace('#^https?://#', '', rtrim($str,'/')); echo $str; // www.google.com 

Есть много способов захватить домен из URL-адреса, который я опубликовал 4 способа, начиная с самого короткого и самого длинного.

# 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 ($ host [0]) – uk, au и т. Д.

Попробуйте это, он удалит то, что вы хотели (http :: //, www и trailing slash), но сохранит другие субдомены, такие как example.google.com

 $host = parse_url('http://www.google.com', PHP_URL_HOST); $host = preg_replace('/^(www\.)/i', '', $host); 

Использовать parse_url

http://www.php.net/manual/en/function.parse-url.php