とあるエンジニアの闇歴史帳

コピペで使える便利Wiki ※現在構築中です。

ユーザ用ツール


perl:youtube_embedplayer

差分

このページの2つのバージョン間の差分を表示します。

この比較画面にリンクする

perl:youtube_embedplayer [2017/12/14 20:18]
perl:youtube_embedplayer [2020/06/23 14:10] (現在)
行 1: 行 1:
 +====== YouTubeのurlが入力されたら再生画面を表示する ======
 +~~socialite~~
 +<note important>この記事は2006年10月08日に書かれたものです。</note>
  
 +YouTubeにはobject要素(タグ)を貼り付けると、ブログやWebサイトなどから直接ビデオを再生できる機能が用意されている。例えば掲示板(BBS)などで、YouTubeのURLが入力されたら、上記のような再生モードに置換したいが、どのようなコードを書けば良いだろうか?
 +
 +次のようなURLのパターンの時に置換が行われる。
 +
 +  * http://youtube.com/watch?v=LIhbap3FlGc
 +  * http://www.youtube.com/watch?v=LIhbap3FlGc
 +
 +最後のID部分が、英数字と'_'で構成されていることが条件である。以下のソースで折り返しているところが改行されている場合は、1行にしていただきたい。
 +
 +===== サンプル =====
 +<code perl>
 +;#
 +;#YouTube変換
 +;#
 +
 +print convYouTube('http://youtube.com/watch?v=LIhbap3FlGc');
 +
 +sub convYouTube{
 +  my $str = shift;
 +  $str =~ s/http\:\/\/(?:www\.)?youtube\.com\/watch\?v\=([a-zA-Z0-9\_]{1,})/<object width\="425" height\="350"><param name\="movie" value\="http\:\/\/www\.youtube\.com\/v\/$1"><\/param><param name\="wmode" value\="transparent"><\/param><embed src="http\:\/\/www\.youtube\.com\/v\/$1" type\="application\/x-shockwave-flash" wmode\="transparent" width\="425" height\="350"><\/embed><\/object>/g;
 +
 +  return($str);
 +}
 +</code>
 +
 +===== 実行結果 =====
 +<code>
 +<object width="425" height="350"><param name="movie" value="http://www.youtube.c
 +om/v/LIhbap3FlGc"></param><param name="wmode" value="transparent"></param><embed src="http:
 +//www.youtube.com/v/LIhbap3FlGc" type="application/x-shockwave-flash" wmode="transparent" w
 +idth="425" height="350"></embed></object>
 +</code>
 +
 +
 +===== サンプル(独自記法) =====
 +
 +通常はURLを貼り付けた方が楽ではあるが、[youtube:LIhbap3FlGc]のように記述するのが好きな方がいるので、このような独自記法についても、おまけで記載しておく。実行結果は上記と同じである。
 +
 +<code perl>
 +;#
 +;#YouTube変換 (独自記法)
 +;#
 +
 +print convYouTube('[youtube:LIhbap3FlGc]');
 +
 +sub convYouTube{
 +  my $str = shift;
 +  $str =~ s/\[youtube:([a-zA-Z0-9\_]{1,})\]/<object width\="425" height\="350"><param name\="movie" value\="http\:\/\/www\.youtube\.com\/v\/$1"><\/param><param name\="wmode" value\="transparent"><\/param><embed src="http\:\/\/www\.youtube\.com\/v\/$1" type\="application\/x-shockwave-flash" wmode\="transparent" width\="425" height\="350"><\/embed><\/object>/g;
 +
 +  return($str);
 +}
 +</code>
 +
 +
 +===== サンプル(URL置換+独自記法) =====
 +
 +URLの置換と、独自記法を合わせたものは以下である。
 +
 +<code perl>
 +;#
 +;#YouTube変換 (URL置換+独自記法)
 +;#
 +
 +sub convYouTube{
 +  my $str = shift;
 +
 +  $str =~ s/http\:\/\/(?:www\.)?youtube\.com\/watch\?v\=([a-zA-Z0-9\_]{1,})/<object width\="425" height\="350"><param name\="movie" value\="http\:\/\/www\.youtube\.com\/v\/$1"><\/param><param name\="wmode" value\="transparent"><\/param><embed src="http\:\/\/www\.youtube\.com\/v\/$1" type\="application\/x-shockwave-flash" wmode\="transparent" width\="425" height\="350"><\/embed><\/object>/g;
 +  $str =~ s/\[youtube:([a-zA-Z0-9\_]{1,})\]/<object width\="425" height\="350"><param name\="movie" value\="http\:\/\/www\.youtube\.com\/v\/$1"><\/param><param name\="wmode" value\="transparent"><\/param><embed src="http\:\/\/www\.youtube\.com\/v\/$1" type\="application\/x-shockwave-flash" wmode\="transparent" width\="425" height\="350"><\/embed><\/object>/g;
 +
 +  return($str);
 +}
 +</code>
 +
 +ご自分の掲示板などを改造、機能追加する際に参考にされたい。
 +
 +なお、YouTubeの仕様が変更になると、これらのスクリプトが動作しなくなる。おそらく下位互換をするとは思われるが、そのような可能性を持っていることを理解した上でご使用ください。
 +
 +===== 関連書籍 =====
 +{{amazon>jp:477415864X}}
 +<html><p style="clear:both"></p></html>
 +
 +{{amazon>jp:B00G9QIN58}}
 +<html><p style="clear:both"></p></html>
 +
 +{{amazon>jp:4774150258}}
 +<html><p style="clear:both"></p></html>
 +
 +{{amazon>jp:4797336803}}
 +<html><p style="clear:both"></p></html>
 +
 +{{amazon>jp:4798139815}}
 +<html><p style="clear:both"></p></html>
 +
 +{{tag>CGI・Perl例文集 Perl YouTube 正規表現 }}
 +~~socialite~~

関連ページ