我想要删除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);
}
?>
任何人都可以帮助我吗?
答案 0 :(得分: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);
答案 1 :(得分: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);
?>
答案 2 :(得分: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);
}
?>
答案 3 :(得分:-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)));