Получение повторяющихся записей массива после синтаксического анализа с помощью регулярного выражения - PullRequest
0 голосов
/ 06 января 2010

Я использую регулярное выражение в своем скрипте PHP, чтобы проверить страницу на наличие ссылок Rapidshare и загрузить их в массив.

Мой код:

if(preg_match_all('/http:\/\/rapidshare\.com\/files\/.*?\/[^\s]+/', $links[0], $links))
{
    print_r($links);
} else {
    die('Cannot find post links :(');
}

Правильно находит ссылки и помещает их в массив:

Array
(
    [0] => Array
        (
            [0] => http://rapidshare.com/files/320708377/file_name1.rar
            [1] => http://rapidshare.com/files/320708377/file_name1.rar
            [2] => http://rapidshare.com/files/333708133/file_name2.rar
            [3] => http://rapidshare.com/files/333708133/file_name2.rar
            [4] => http://rapidshare.com/files/330738827/file_name3.rar
            [5] => http://rapidshare.com/files/330738827/file_name3.rar
        )

)

Как видите, он вводит две ссылки в массив для каждой. Я понятия не имею, почему это происходит, но я подозреваю, что это как-то связано с регулярным выражением.

Любая помощь? Приветствия. :)

Ответы [ 4 ]

1 голос
/ 06 января 2010

preg_match_all () не будет магически дублировать URL-адреса, они должны встречаться 2 раза каждый. Вы используете регулярное выражение в строке HTML? Я подозреваю, что если есть тег <a>, вы захватываете и href, и фактический текст ссылки:

<a href="http://www.example.com">http://www.example.com</a>
1 голос
/ 06 января 2010

Только для записи:

$array = array_unique($values); 

Это не будет работать для многомерных массивов, хотя ... так что вам придется for each через первый массив.

0 голосов
/ 06 января 2010

preg-match-all Может ли тема и совпадения не использовать одно и то же имя переменной?

Это слишком запутанно.

Также.дайте нам содержание $ links

0 голосов
/ 06 января 2010

вздох Происходит, потому что это гиперссылка и захватывает URL-адрес, на который она загружается, и текст ссылки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...