Я использую регулярное выражение в своем скрипте 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 ) )
Как видите, он вводит две ссылки в массив для каждой. Я понятия не имею, почему это происходит, но я подозреваю, что это как-то связано с регулярным выражением.
Любая помощь? Приветствия. :)
preg_match_all () не будет магически дублировать URL-адреса, они должны встречаться 2 раза каждый. Вы используете регулярное выражение в строке HTML? Я подозреваю, что если есть тег <a>, вы захватываете и href, и фактический текст ссылки:
preg_match_all
<a>
href
<a href="http://www.example.com">http://www.example.com</a>
Только для записи:
$array = array_unique($values);
Это не будет работать для многомерных массивов, хотя ... так что вам придется for each через первый массив.
for each
preg-match-all Может ли тема и совпадения не использовать одно и то же имя переменной?
Это слишком запутанно.
Также.дайте нам содержание $ links
вздох Происходит, потому что это гиперссылка и захватывает URL-адрес, на который она загружается, и текст ссылки.