先日のトラブル以来、画像掲示板プログラムの修正を続けております。

見直していると、突貫で作って放置してしまっていただけに、正常に動かなくなっていたり、最初から全く機能していなかった部分も多々見つかり。。。なんともお恥ずかしいばかりです。

特に不具合が目立ったのは、YouTubeとニコニコ動画の動画IDを投稿されたURLから抽出するあたりで、YouTubeやニコニコ動画側の仕様変更もあり、全然うまく動いていなかった気がします。そこで、取り急ぎ、この部分の修正作業をしてみました。

imgbbs_dtn_2012.gif
当時の画像掲示板の泉ロゴ。目のロゴは怖いのでやめました。。

ちなみに。動画IDをプログラムで正確に抜き取りさえ出来れば、HTML中に小窓で表示させるのはIDはめ込むだけなので超簡単でした。こんな感じで縦横サイズも指定できてしまいます。

$YouTube = ' embed src="http://www.youtube.com/v/' . $動画ID . '" type="application/x-shockwave-flash" wmode="transparent" width="横サイズ" height="縦サイズ" '

埋め込み自体は簡単ですが、少々手間だったことが、画像掲示板の投稿フォームからPOSTされたURLから、この動画のIDをきれいに抜き取る作業でした。

YouTube、ニコニコ動画共に、動画を見ている時のブラウザURLを見ると、パラメータが山ほどくっついてたりして、そこから動画IDだけ抜き取らなければいけないので、これが少々厄介です。

かといって、投稿時に『sm00000000』や『v=XXXXXXX0XXX』みたいな部分だけをきちんと入力して下さいというのも手間でしょうし、文字列一つ違うと別の動画になったりするので、キッチリ動画のIDを抜き出す必要があります。

そこで、正規表現を使ってID抽出をしておきました。正規表現が慣れないので紆余曲折ありましたが、結果、あれこれやってこんな形になりました。

YouTubeの場合はこのような感じです。

//YouTube
preg_match('@[&?]v=([^&]+)|be/(.+)$@',$URL, $match);
$movieaddr = $match[1];  //こちらは配列の[1]に

ニコニコ動画の場合は一旦URLから?以降を切り出した上、このような感じにしてみました。

//ニコニコ動画
$URL = preg_replace('/\?.*/','',$URL);	//?以降を先に削除
preg_match('/[a-zA-Z0-9]{8,10}$/',$URL, $match);
$movieaddr = $match[0];  //こちらは配列の[0]

先方の仕様変更があったりしたらダメになるでしょうが、まだ大丈夫そうです。

サーバートラブルの影響もあり、アクセス数は残念ながら減る一方でした。荒れた掲示板をメンテナンスし続けるよりはマシですが、人がいない掲示板というのも少々悲しいものがありますね。。

スポンサーリンク