2016-05-01 26 views
1

私は以下のFacebookのURLを持っています(これはすべてFacebookの動画です)、私はそのIDを取得したいと思います。 https://mbasic.facebook.com/TrendingInPhilippinesOfficial/videos/1722369168023859/ PHP Regex FacebookビデオID

  1. https://mbasic.facebook.com/story.php?story_fbid=1722369168023859&id=1388211471439632

出力がなければなりません:私はIDを取得するには、この正規表現を使用し

1. 1388211471439632 
2. 1388211471439632 

preg_match("~/videos/(?:t\.\d+/)?(\d+)~i", $_GET['url'], $matches); 
echo $matches[1]; 

だけでなく、それは#1で動作しますが、#2で、それは動作しません。

これに対する解決策はありますか?

+0

1388211471439632は、ちょうど2番目のリンクです。 – WizKid

答えて

1

私はあなたが両方のリンクのための正規表現をしたいと思いますか?末尾/又は&ずにそれを解析することを可能にする正規表現の終わりに?

$link1 = "https://mbasic.facebook.com/TrendingInPhilippinesOfficial/videos/1722369168023859/"; 
$link2 = "https://mbasic.facebook.com/story.php?story_fbid=1722369168023859&id=1388211471439632"; 
$regex = '/(videos|story_fbid)(\/|=)(\d+)(\/|&)?/'; 

preg_match($regex, $link1, $matches); 
preg_match($regex, $link2, $matches2); 

注意。両方があるときにのみIDを解析する場合は、正規表現から疑問符を削除します。

$matchesののvar_dumpは次のようになります。

array(5) { 
    [0]=> 
     string(24) "videos/1722369168023859/" 
    [1]=> 
     string(6) "videos" 
    [2]=> 
     string(1) "/" 
    [3]=> 
     string(16) "1722369168023859" 
    [4]=> 
     string(1) "/" 
} 

そして$matches2ののvar_dumpは次のようになります。

array(5) { 
    [0]=> 
     string(28) "story_fbid=1722369168023859&" 
    [1]=> 
     string(10) "story_fbid" 
    [2]=> 
     string(1) "=" 
    [3]=> 
     string(16) "1722369168023859" 
    [4]=> 
     string(1) "&" 
} 
+0

リンク1が '/'で終わらず、リンク2が '/'で終わる場合 – Jacob

+0

@Jacob正規表現の最後に '?'を追加して、リンク1が終了しない場合に許可します末尾にスラッシュが付きます。また、リンク2が末尾のスラッシュで終わっても、リンク2はまだ機能するはずです。 –