タグ:Youtube
YoutubeのコードをW3Cバリデーションチェックでもエラーが出ないコードに変換するプログラム
Youtubeの埋め込みコードをそのまま張り付けると、embedタグが含まれるためW3Cバリデーションチェックで多大なエラーを吐いてくれます。
はっきり言ってembedタグなくても、マルチブラウザで対応できる記述方法はある!
たとえば「はやぶさ」の動画の埋め込みコード
<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/waJdDeYlidQ?fs=1&hl=ja_JP"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/waJdDeYlidQ?fs=1&hl=ja_JP" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object>
これはこのように変換できます。
<object data="http://www.youtube.com/v/waJdDeYlidQ?fs=1&hl=ja_JP" type="application/x-shockwave-flash" width="640" height="385"><param name="movie" value="http://www.youtube.com/v/waJdDeYlidQ?fs=1&hl=ja_JP" /><param name="wmode" value="transparent" /></object>
用は
<object data="動画のURL" type="application/x-shockwave-flash" width="動画の幅" height="動画の高さ"><param name="movie" value="動画のURL" /><param name="wmode" value="transparent" /></object>
となればよいわけです。
が、自分で張り付けるならこれくらいの作業は行うんですが、お客さんにもやってもらうというわけにはなかなかいきません。
バリデーションチェックなんてWEB屋か詳しい人でもない限りあまり気にしないでしょうからね。
というわけでPHPにて自動的に変換する関数を作りました。
※Youtubeコードだけの場合、変換することが可能なプログラムです。
記事中に含まれるコードを変換させるのはこの関数では無理です。
カスタムフィールドなどを使ってYoutubeコードを投稿できる仕様にしている場合のみご利用ください。
function youtubeCodeW3C($movie_code, $movie_title=NULL, $width=NULL, $height=NULL){
//URL取得
if (eregi("(https?|ftp|news)(://[[:alnum:]\S\+\$\?\.%,!#~*/:@&=_-]+)", $movie_code)) {
$movie_url_code = eregi_replace("(https?|ftp|news)(://[[:alnum:]\S\+\$\?\.%,!#~*/:;@&=_-]+)", "<>\\1\\2<>", $movie_code);
$movie_url_code_split = explode("<>", $movie_url_code);
$movie_url = $movie_url_code_split[1];
}
//width取得
if($width != NULL){
$width_value = 'width="'.$width.'"';
}elseif (eregi('(width=?)("[0-9]+")', $movie_code)) {
$width_code = eregi_replace('(width=?)("[0-9]+")', "<>\\1\\2<>", $movie_code);
$width_code_split = explode("<>", $width_code);
$width_value = $width_code_split[1];
}
//height取得
if($height != NULL){
$height_value = 'height="'.$height.'"';
}elseif (eregi('(height=?)("[0-9]+")', $movie_code)) {
$height_code = eregi_replace('(height=?)("[0-9]+")', "<>\\1\\2<>", $movie_code);
$height_code_split = explode("<>", $height_code);
$height_value = $height_code_split[1];
}
$w3c_code = '<object data="'.$movie_url.'" type="application/x-shockwave-flash" '.$width_value.' '.$height_value.'><param name="movie" value="'.$movie_url.'" /><param name="wmode" value="transparent" />'.$movie_title.'</object>';return $w3c_code;
}
youtubeCodeW3C関数の引数はそれぞれ以下の通りです。
- $movie_code:Youtubeから取得した埋め込みコード
- $movie_title:動画のタイトル(NULLでも可)
- $width:動画の幅(NULLでも可)
- $height:動画の高さ(NULLでも可)
nandani | 2010年12月14日 | コメント(2) | トラックバック(0) | PHP関連