Гуру, помогите, пожалуйста. Как сравнить данные?

P
На сайте с 06.01.2009
Offline
601
404

Ребят.

Нужно в заданной строке сравнить адреса ссылок - если есть повторяющиеся, то вывести текст, типа "адреса повторяются".

Вот что я смог. прошу помочь. Спасибо заранее


<?php
//строка в которой ищем не совпадают ли адреса ссылок
$title = 'страница со списком http://www.site.ru/manual/info.php функций обработки http://www.site.ru/manual/pole.php строк http://www.site.ru/manual/pole.php';
// нам надо найти то что между http:// и .php (включительно)
preg_match_all ('~http://(.*?).php~is', $title, $match);
echo "<br><br>";
echo $match[0][0];
echo "<br><br>";
echo $match[0][1];
echo "<br><br>";
echo $match[0][2];

echo "<br><br>";
$resultf = count($match); // не понятно как определить сколько адресов
echo $resultf;
?>

а вот что видим в результате выполнения


http://www.site.ru/manual/info.php

http://www.site.ru/manual/pole.php

http://www.site.ru/manual/pole.php

2
ДП
На сайте с 23.11.2009
Offline
203
#1

Можно так - получить все адреса в массив по строке, запомнить длину массива. Сделать array_unique(), посмотреть длину. Если различаются - то есть повторы.

P
На сайте с 06.01.2009
Offline
601
#2
Дикий пионер:
Можно так - получить все адреса в массив по строке, запомнить длину массива. Сделать array_unique(), посмотреть длину. Если различаются - то есть повторы.

Идея хорошая, но у меня не получается узнать длинну массива. Я результат выполнения показал - адреса 3, а результат =2.

postavkin добавил 21.07.2011 в 16:38

Убрал один адрес из строки, все равно результат = 2.



http://www.site.ru/manual/pole.php

http://www.site.ru/manual/pole.php



2
Ёхан Палыч
На сайте с 07.05.2006
Offline
169
#3
postavkin:
Идея хорошая, но у меня не получается узнать длинну массива. Я результат выполнения показал - адреса 3, а результат =2.

postavkin добавил 21.07.2011 в 16:38
Убрал один адрес из строки, все равно результат = 2.

Правильно, получилось два массива $match[0] и $match[1], а в них уже урлы. То есть считать надо только $resultf = count($match[0]); Если хочется получить размер всего массива рекурсивно, то count($match, COUNT_RECURSIVE);

P
На сайте с 06.01.2009
Offline
601
#4

Ёхан Палыч, спасибо огромнейшее. Оказывается все так просто, а я столько вариантов перебрал. в поиске искал...

Ёхан Палыч
На сайте с 07.05.2006
Offline
169
#5

postavkin, вы на будущее смотрите свои массивы так print_r($match) и все будет ясно.

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