| ブログトップ | PHP関連 |

YoutubeのコードをW3Cバリデーションチェックでもエラーが出ないコードに変換するプログラム

Youtubeの埋め込みコードをそのまま張り付けると、embedタグが含まれるためW3Cバリデーションチェックで多大なエラーを吐いてくれます。

はっきり言ってembedタグなくても、マルチブラウザで対応できる記述方法はある!

たとえば「はやぶさ」の動画の埋め込みコード

<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/waJdDeYlidQ?fs=1&amp;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&amp;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&amp;hl=ja_JP" type="application/x-shockwave-flash" width="640" height="385"><param name="movie" value="http://www.youtube.com/v/waJdDeYlidQ?fs=1&amp;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でも可)

サンプル

このエントリーをはてなブックマークに追加

LINEで送る

nandani | 2010年12月14日 | コメント(2) | トラックバック(0) | PHP関連

トラックバック

トラックバックURL

コメント一覧

1. Posted by 本石喜一   2010年12月20日

すばらしいソースコードです!
シビレました!

2. Posted by nandani   2010年12月20日

本石喜一さん。

コメントありがとうございます^^
コードに関しては、いつかどこかで拾ったものなどもあったりして完全オリジナルではないのですが、お役にたったのであれば何よりです。

コメントする

※メールアドレスが公開されることはありません。

名前 *
メール*
URL
Copyright(c) 2010 - 2017 ダリの雑記