Соответствие Rapidshare ссылки с регулярным выражением - PullRequest
1 голос
/ 06 января 2010

Я хочу сопоставить последовательность ссылок Rapidshare на веб-странице.Ссылки выглядят так:

http://rapidshare.com/files/326251387/file_name.rar

Я написал этот код:

if(preg_match_all('/http:\/\/\rapidshare\.com\/files\/.*?\/.*?/', $links[1], $links))
{
    echo 'Found links.';
} else {
    die('Cannot find links :(');
}

И он каждый раз повторяет Cannot find links :(.Обратите внимание, что я хочу вернуть полное совпадение, поэтому оно будет возвращать каждую ссылку Rapidshare, найденную на странице в массиве.

$links[1] также имеет действительную строку.

Любая помощь будет оценена, ура.

Ответы [ 3 ]

1 голос
/ 18 июля 2011

Существует множество нелогичных HTTPS-ссылок на rapidshare.com, их можно найти в Google: «https://rapidshare.com/files/"

Я рекомендую изменить ваше регулярное выражение на https?:.

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

Похоже, у вас есть случайный обратный слеш перед Rapidshare

if(preg_match_all('/http:\/\/\rapidshare\.com\/files\/.*?\/.*?/', $links[1], $links))

Должно быть

if(preg_match_all('/http:\/\/rapidshare\.com\/files\/.*?\/[^\s"']+/', $links[1], $links))

(\r - символ возврата каретки)

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

Чтобы избежать этого безумия, от которого вы можете избежать косой черты в URL, я бы использовал другой разделитель для моего регулярного выражения - например, #; и это поможет увидеть, что у вас слишком много \ до rapideshare.


Тогда вы можете получить что-то похожее на это:
(Вдохновленный от вашего - только немного изменился в конце, потому что он не возвращал имя файла ;; вы можете изменить это немного больше, однако, чтобы исключить некоторые другие символы, кроме белого -пространства, такие как ")

$str = 'blah http://rapidshare.com/files/326251387/file_name.rar blah';
if(preg_match_all('#http://rapidshare\.com/files/(.*?)/([^\s]+)#', $str, $m)) {
    var_dump($m);
}


Который, вот, вы получите:

array
  0 => 
    array
      0 => string 'http://rapidshare.com/files/326251387/file_name.rar' (length=51)
  1 => 
    array
      0 => string '326251387' (length=9)
  2 => 
    array
      0 => string 'file_name.rar' (length=13)
...