Php 如何从大量URL列表中删除重复域

Php 如何从大量URL列表中删除重复域,php,regex,Php,Regex,我想删除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 我需要删除重复的域,我需要下面的

我想删除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);
}

?>

有人能帮我吗?

要从您可以使用的阵列中删除重复项。要使列表成为一个数组,可以使用。然后,要使其再次成为字符串,可以使用inflade()

要将这些放在一起,可以使用以下代码:

$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)));

要在域上进行比较,可以使用:


$uniqueDomains
将主机名作为密钥。如果您不需要(和/或想要),则使用
array\u值($uniqueDomains)



OP声明他不想删除重复的条目,而是要删除重复的域。例如,只留下一个exampleurl.com和一个domain.com…yea Calle是正确的。要删除重复的代码,我已经给出了代码,是否正确:
$uniqueDomains=array\u reduce(){
而不是
array\u reduce(
?无论如何,括号要匹配。。
<?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);
?>
$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()
);
<?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);
}
?>