Regex ile eşleşen Rapidshare bağlantılar

3 Cevap php

Ben bir web sayfasında Rapidshare bağlantılar dizisi maç istiyorum. Bağlantıları gibi görünüyorsun:

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

Ben bu kodu yazdım:

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

Ve Cannot find links :( her zaman retuns. Ben entire maç dönmek için, bu yüzden geri bir dizi sayfasında bulunan her Rapidshare linki getirecek istediğinizi unutmayın.

$links[1], çok geçerli bir dize var.

Herhangi bir yardım, şerefe takdir edilecektir.

3 Cevap

Eğer rapidshare önce başıboş bir ters eğik çizgi var gibi görünüyor

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

Olmalı

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

(\r, bir satırbaşı karakteri)

There are a lot of nonlogic HTTPS links to rapidshare.com, you can find them on google: "https://rapidshare.com/files/"

I https?: eklemek için regex değiştirmenizi öneririz.

Eğer URL'leri bölü kaçan içine alıyoruz deliliği önlemek için, benim regex için başka delimiter kullanmak - #, örneğin gibi; ve bu rapideshare önce \, bir çok sahip olduğunu görerek yardımcı olacaktır.


Then, you could have something that looks like this :
(Inspired from yours -- only changed a bit at the end because it wasn't returning the file's name ;; you might want to adapt this a bit more, though, to exlclude some other characters than just white-spaces, like ")

$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);
}


Which, here, will get you :

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)