有没有一种方法可以将所有while循环值存储到数组中?

时间:2019-11-25 09:00:45

标签: php while-loop text-files

我正在做一个非常全面的应用程序,我已经从事了几个月。对于下一步,我正在编写一些代码,这些代码将从我的文本文件中删除所有重复的域。

我以前所做的是使用(php)array_unique();函数,该函数将从txtfile中删除我的重复项。但是我需要删除所有相同的域。

旧情况(这会删除网址 1或2 ,因为它们完全相同)

  1. google.nl
  2. google.nl
  3. google.nl/hello

所需的情况(由于域相同,将删除三个网址中的两个):

  1. google.nl/你好
  2. google.nl/黄色
  3. google.nl

所以我做了一些代码,将我txtfile中的每个url显示到屏幕上(没什么特别的)。我通过使用while循环来做到这一点:

$file = fopen("file.txt","r");
while(! feof($file))
{
    echo fgets($file). "<br />";
}

因此,我使用了本教程来帮助自己:how to get domain name from URL。这是我使用的代码。

function parse_url_all($url){
    $url = substr($url,0,4)=='http'? $url: 'http://'.$url;
    $d = parse_url($url);
    $tmp = explode('.',$d['host']);
    $n = count($tmp);
    if ($n>=2){
        if ($n==4 || ($n==3 && strlen($tmp[($n-2)])<=3)){
            $d['domain'] = $tmp[($n-3)].".".$tmp[($n-2)].".".$tmp[($n-1)];
            $d['domainX'] = $tmp[($n-3)];
        } else {
            $d['domain'] = $tmp[($n-2)].".".$tmp[($n-1)];
            $d['domainX'] = $tmp[($n-2)];
        }
    }
    return $d;
}

$urls = array('website1','website2');
echo "<div style='overflow-x:auto;'>";
echo "<table style='text-align:left;'>";
echo "<tr><th>URL</th><th>Host</th><th>Domain</th><th>Domain X</th></tr>";
foreach ($urls as $url) {
    $info = parse_url_all($url);
    echo "<tr><td>" . $url . "</td><td>" . $info['host'] . "</td><td>" . $info['domain'] . "</td><td>" . $info['domainX'] . "</td></tr>";
}
echo "</table></div><br>";

如何从此行将while循环(txtfile)的输出获取到数组中: $urls = array('output from textfile');可能很简单,但我只是想不通。

1 个答案:

答案 0 :(得分:1)

这是您可以用来查找唯一网址并将其另存为csv文件的代码段:

container = client.containers.run(image="alpine:latest", command=["/bin/sh", "-c", 'echo 1 && echo 2'])

https://repl.it/@arvindDhakad/php-unique-urls-filter-DS