-1

我有一个 txt 文件 (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) 中有大约 10,000 个域我想用上面的代码过滤域

例如:

前:

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
4

1 回答 1

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 所建议的那样保存到数据库中(这里有一个示例)
  • 如果您有权访问,请使用命令行。如果是这种情况,您可能最好完全跳过 PHP 并使用命令行函数

注意:如果您确实选择了上面的 PHP,您可能需要考虑在该脚本中增加PHP 的时间限制。

于 2018-03-22T10:31:50.843 回答