2012-03-08 18 views
0

こんにちは私は、ユーザーが生成したYouTube URLの変数を持っています。ここでは正規表現について多くのスレッドがありますが、そうではありませんが、ほとんどがjsで実行されています。私はここに私の単純な関数であり、PHP内のすべてのサーバー側を実行したい:URLの一部を削除して残りの一意のIDを取得する方法

function youTubeID($url){ 
    $url = preg_replace('http://youtu.be/ Regex goes here', '', $url); 
    return $url; 
} 

マークアップ:

<a href="http://youtu.be/yhXhVMKxnkY"><img src="http://img.youtube.com/vi/'.youTubeID($variable).'/0.jpg" /><img src="play.png" alt="Watch the video" title="Watch the video"/></a> 

質問: は誰もがhttp://youtu.be/のための適切な正規表現を知っていますか?

私はこれが素早い答えであると確信しています。私は正規表現であまり精通していません。副次的に、誰かが良い正規表現を教えることができる良いリソースを知っているので、私はこのような愚かな構文の質問をする必要はありませんか?乾杯。ここで

+0

[するpreg_matchを使用してユーチューブの動画IDを解析]が重複する可能性が(のhttp: //stackoverflow.com/questions/2936467/parse-youtube-video-id-using-preg-match) – PeeHaa

+0

実際に何をしようとしているのかはあなたの関数からは分かりません – Madbreaks

+0

[私の答えはsimila r質問](http://stackoverflow.com/a/5831191/433790)。良い正規表現のチュートリアルは、[www.regular-expressions.info](http://www.regular-expressions.info/tutorial.html)で見つけることができます – ridgerunner

答えて

1

(比較的遅い)RegExを使う理由は何ですか?

$url = substr($url, strlen('http://youtu.be/')); 

明らかにあなたは、設定された開始点にそれを関数を呼び出すたびに計算するので、必要がないが、アイデアを証明するためにここにそうします。

編集:

場合、あなたは正規表現を使用するために必要ないくつかの理由があります:

$url = preg_replace('#http\://youtu\.be/#', '', $url); 

乾杯

+0

素晴らしい、上の正規表現は、まさに私が何をしていたのか、完全に動作します。ありがとう。 – Swordfish0321

0

あなたが行く:

/(?<=v(\=|\/))([-a-zA-Z0-9_]+)|(?<=youtu\.be\/)([-a-zA-Z0-9_]+)/m 

編集を:woops、あなたが言うことができる..

function youTubeID($url){ 
    $pattern = "/(?<=v(\=|\/))([-a-zA-Z0-9_]+)|(?<=youtu\.be\/)([-a-zA-Z0-9_]+)/m"; 
    preg_match($pattern, $ytURL, $url); 
    return $url[0]; 
    } 

それをテストするために:これはいつも私のためにブックマークされhttp://gskinner.com/RegExr/

http://www.regular-expressions.info/reference.html

+0

情報をありがとう...何らかの理由でちょうどやっている私が後にしているのとは反対に、それはIDを剥奪し、そのURLの後ろにあるすべてのものの代わりにhttp://youtu.be/を印刷しています。私は上記のようにこれを実行しています。 – Swordfish0321

関連する問題