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 回答