0

URLのリストで重複するドメインを削除したい、例えば以下はテキストファイルです

http://www.exampleurl.com/something.php
http://www.domain.com/something.php
http://www.exampleurl.com/something111.php 
http://www.exampleurl.com/something111.php 
http://www.exampleurl.com/something222.php 

重複するドメインを削除する必要があり、以下のリストが必要です

http://www.exampleurl.com/something.php
http://www.domain.com/something.php

以下は、テキストファイル内の重複を削除するだけのコードです。

$text = array_unique(file($filename));

$f = @fopen("promo1.txt",'w+');
if ($f) {
  fputs($f, join('',$text));
  fclose($f);
}

?>

誰かが私を助けることができますか?

4

4 に答える 4

2
$urls = file('domains.txt');
$uniqueDomains = array_reduce (
    $urls,
    function (array $list, $url) {
        $domain = parse_url($domain, PHP_URL_HOST);
        if (!isset($list[$domain])) $list[$domain] = $url;
        return $list;
    },
    array()
);

$uniqueDomainsホスト名をキーとして持っています。必要ない(および/またはしたい)場合は、使用しますarray_values($uniqueDomains);

于 2013-01-31T11:48:14.317 に答える
0
<?php
/*
$lines = file('textfile.txt');
*/
$lines = array(
'http://www.exampleurl.com/something.php',
'http://www.domain.com/something.php',
'http://www.exampleurl.com/something111.php',
'http://www.exampleurl.com/something111.php',
'http://www.exampleurl.com/something222.php'
);
foreach($lines as $line){
 $url_parsed = parse_url($line);
 if(is_array($url_parsed)){
  $host = $url_parsed['host'];
  if(!@$uniques[$host]){
   $uniques[$host] = $line;
  }
 }
}
echo join('',$uniques);
$f = @fopen("promo1.txt",'w+');
if ($f) {
  fputs($f, join("\n",$uniques));
  fclose($f);
}
?>
于 2013-01-31T11:51:22.310 に答える
0

ドメインを比較するには、parse_urlを使用できます。

<?php
$text = file_get_contents("input.txt");
$lines = explode("\n",$text);
$filtered_domains = array();
foreach($lines as $line)
{
    $parsed_url = parse_url($line);
    if(array_search($parsed_url['host'], $filtered_domains) === false)
    {
        $filtered_domains[$line] = $parsed_url['host'];
    }
}
$output = implode("\n", array_keys($filtered_domains));
file_put_contents("output.txt", $output);
?>
于 2013-01-31T11:44:38.420 に答える
-1

配列から重複を削除するには、array_unique()を使用できます。リストを配列にするには、 explode()を使用できます。次に、再び文字列にするには、implode() を使用できます。

これをすべてまとめるには、次のコードを使用できます。

$list = "http://www.exampleurl.com/something.php
        http://www.domain.com/something.php
        http://www.exampleurl.com/something111.php 
        http://www.exampleurl.com/something111.php 
        http://www.exampleurl.com/something222.php";

$newList = implode("\n", array_unique(explode("\n", $list)));
于 2013-01-31T11:41:52.250 に答える