Чтобы избежать этого безумия, от которого вы можете избежать косой черты в 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)