У меня есть текстовый файл (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
В теории это так просто, как:
$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);
Но, в зависимости от размера файла ваших доменов, это может быть медленным и / или занимать много ресурсов, возможно даже сбой. Вы не упоминаете, является ли это разовым или что-то, что часто случается, но если это проблема, то другие решения могут включать:
Примечание: если вы перейдете на PHP выше, вам может понадобиться увеличить Ограничение по времени PHP в этом сценарии.
Других решений пока нет …