人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPの正規表現パターンマッチについてお願いします

PHP4で下記のようなYouTubeのURLから、
ビデオID「ECZWIiFO11k」の部分だけを抽出する方法を教えてください。

対象のURLパターンは例のような3つのドメインのパターンと、
それぞれのビデオIDの後に余計なパラメーターが&から続く場合もあります。

<例>
1)http://www.youtube.com/watch?v=ECZWIiFO11k
2)http://jp.youtube.com/watch?v=ECZWIiFO11k
3)http://youtube.com/watch?v=ECZWIiFO11k
4)http://youtube.com/watch?v=ECZWIiFO11k&mode=related&search=

具体的なコードでご教授をよろしくお願いいたします。


●質問者: urawareds
●カテゴリ:ウェブ制作
✍キーワード:PHP URL YouTube コード ドメイン
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● GEN111
●27ポイント

こんな感じでしょうか。

$url = array(
'http://www.youtube.com/watch?v=ECZWIiFO11k',
'http://jp.youtube.com/watch?v=ECZWIiFO11k',
'http://youtube.com/watch?v=ECZWIiFO11k',
'http://youtube.com/watch?v=ECZWIiFO11k&mode=related&search=') ;

foreach ($url as $one) {
 $id = preg_replace('/.*v=([\d\w]+).*/', '$1', $one) ;
 echo $id."<br />\n" ;
}
◎質問者からの返答

ありがとうございます

説明が足りなかったみたいです、ごめんなさい。

複数のURLから探す方法ではなくて、

4つの例のようなパターンのうち、

どれか一個だけが$urlに入って

リクエストがとんでくるので

そこからビデオIDを抜き出す方法をもとめています。

よろしくお願いします。


2 ● GEN111
●17ポイント

例示のパターン全てを満たすことを示すために配列にしただけなので、

$id = preg_replace('/.*v=([\d\w]+).*/', '$1', $one) ;

ここだけ使ってください。


3 ● いわわ
●36ポイント
$n = preg_match("/v=(\w*)/","http://youtube.com/watch?v=ECZWIiFO11k&mode=related&search=",$matches);

$n==1のとき、$matches[1]にビデオIDが入ります。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ