1

Web ページ上の一連の 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]にも有効な文字列があります。

どんな助けでも大歓迎です、乾杯。

4

3 に答える 3

1

ラピッドシェアの前にバックスラッシュがあるようです

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

する必要があります

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

(\rは改行文字)

于 2010-01-06T00:02:03.357 に答える
1

Rapidshare.com への非論理的な HTTPS リンクが多数あります。Google で見つけることができます: "https://rapidshare.com/files/"

を含めるように正規表現を変更することをお勧めしますhttps?:

于 2011-07-18T15:18:38.593 に答える
0

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)
于 2010-01-06T00:06:37.483 に答える