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