画像掲示板プログラムの修正

画像掲示板の泉が荒らしを受けているといった話を先日ご紹介しました。

あれ以来、画像掲示板プログラムの修正を続けていましたが、突貫で作って放置していたプログラムなだけに、まともに動かなかったり、最初から全く機能していなかった部分も多数見つかりました。

YouTubeやニコ動貼り付けの不具合

特に不具合が目立ったのは、YouTubeとニコニコ動画の動画IDを投稿URLから抽出し、掲示板に貼り付けをするあたりでした。どうやらYouTube側、ニコニコ動画側の仕様変更があったこともあり、全然うまく動いてはいなかったようです。

当時の画像掲示板の泉ロゴ

当時の掲示板ロゴ。目のロゴは怖いのでだいぶ前にやめました。

動画IDの抽出

YouTubeやニコニコ動画の動画URLにはパラメータが山ほどくっついていますが、そこから動画IDだけ抜き取らなければいけないので、これが少々厄介ではあります。

掲示板へ貼り付けする際、『sm00000000』や『v=XXXXXXX0XXX』といった動画ID部分を手できちんと切り取って入力するのは手間ですし、1文字間違えたら別の動画になってしまうので、正直運用には耐えそうにありません。

そこで、正規表現を使って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]

抽出動画IDを使った掲示板埋め込み

動画IDをプログラムで正確に抜き取りができれば、掲示板のHTMLで表示をさせるのはIDはめ込んだコードを置くだけなので超簡単でした。下記のように縦横サイズも指定ができてしまいます。

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

おわりに

サイト側で仕様の変更があったら即ダメになるでしょうが、とりあえず今のところは動いていそうです。サーバートラブルの影響もあり、アクセス数は減る一方の掲示板となり残念ですが、荒れた掲示板をメンテナンスし続ける手数もないので、しばらくは人がいない掲示板で置いておこうと思います。