Как удалить одинаковые ссылки?

[umka]
На сайте с 25.05.2008
Offline
456
#1

Берёте все ссылки, пихаете их в ассоциативный массив, где ключом является имя домена, а значением ссылка целиком, и это при условии, что такого ключа в массиве ещё нет.

Таким образом в массиве у каждого ключа-домена будет первая ссылка из списка.

Лог в помощь!
seosniks
На сайте с 13.08.2007
Offline
389
#2
'[umka:
;12692995']Берёте все ссылки, пихаете их в ассоциативный массив, где ключом является имя домена, а значением ссылка целиком, и это при условии, что такого ключа в массиве ещё нет.
Таким образом в массиве у каждого ключа-домена будет первая ссылка из списка.

Пробовал брать из одного файла домены с другого ссылки, сравнивать. Но что то не выходит у меня 😡

Пробовал сравнивать строки, тоже что то не вышло.

буду еще пробовать.

[umka]
На сайте с 25.05.2008
Offline
456
#3

Откуда взялись файлы? :)

Изначально же были только "ссылки вида".

seosniks
На сайте с 13.08.2007
Offline
389
#4
'[umka:
;12694248']Откуда взялись файлы? :)
Изначально же были только "ссылки вида".

Вы правы, файлы содержат ссылки. Вернее файл a.txt грязные ссылки.

А в файл b.txt я закинул домены, удалив повторы.

А на форум я выложил примеры, чтоб понятен был смысл.

По реализации я думаю надо сделать так.

Брать ссылку из базы a.txt и записывать эту ссылку в новый файл назовем его x.txt

далее при проходе циклом проверять.

Если есть такой домен есть то пропускаем и не записываем.

И так пока не пройдем все ссылки.

Из базы выборку я делал тоже сравнивая данные, но там проще было.

типа так

$result = mysql_query('SELECT COUNT(title) as cnt FROM `dle_post` WHERE `title`="'.$title.'"');

$cnt=mysql_fetch_row($result);

unik=$cnt[0];

if($unik){ }

[umka]
На сайте с 25.05.2008
Offline
456
#5

$links=array();

foreach (file("a.txt") as $url) {
if ($host=parse_url($url, PHP_URL_HOST)) {
if (!$links[$host]) {
$links[$host]=$url;
}
}
}

В результате имеем массив $links, в котором каждому хосту присвоена одна ссылка (первая из списка).

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий