Получить имя домена из полного URL

У меня есть текстовый файл (links.txt) В нем тысячи ссылок

Я хочу отсортировать все ссылки, используя следующий код

<?php
function get_domain($url)
{
$pieces = parse_url($url);
$domain = isset($pieces['host']) ? $pieces['host'] : $pieces['path'];
if (preg_match('/(?P<domain>[a-z0-9][a-z0-9\-]{1,63}\.[a-z\.]{2,6})$/i', $domain, $regs)) {
return $regs['domain'];
}
return false;
}
print get_domain("http://mail.somedomain.co.uk"); // outputs 'somedomain.co.uk'
?>

Как вызвать файл 1 и расположить их и снова сохранить?

В моем файле (domains.txt) есть около 10000 доменов
Я хочу отфильтровать домены с помощью приведенного выше кода

например:

До:

http://www.example.com/about
www.example.net/index.php
http://subdomain.example.org/
http://www.example.co/page-1
http://www.example.co.uk

После:

example.com
example.net
example.org
example.co
example.co.uk

-1

Решение

В теории это так просто, как:

$file = file('domains.txt');
for ($x=0;$x<count($file);$x++) {
$file[$x] = get_domain($file[$x]);
}
sort($file);
file_put_contents('domains.txt', $file);

Но, в зависимости от размера файла ваших доменов, это может быть медленным и / или занимать много ресурсов, возможно даже сбой. Вы не упоминаете, является ли это разовым или что-то, что часто случается, но если это проблема, то другие решения могут включать:

  • Сохранение в базе данных, как предложено @Karlo Kokkak (один пример на SO Вот)
  • Используйте командную строку, если у вас есть доступ. Если бы это было так, вам, вероятно, лучше вообще пропустить PHP и использовать функции командной строки

Примечание: если вы перейдете на PHP выше, вам может понадобиться увеличить Ограничение по времени PHP в этом сценарии.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]