次のような bbcode タグを解析するブログを作成しています。
入力:<youtube=http://www.youtube.com/watch?v=VIDEO_ID&feature=channel>
出力:
<object width="400" height="245">
<param name="movie" value="http://www.youtube- nocookie.com/v/VIDEO_ID&hl=en&fs=1&rel=0&showinfo=0"></param>
<param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param>
<embed src="http://www.youtube-nocookie.com/v/VIDEO_ID&hl=en&fs=1&rel=0&showinfo=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="400" height="245"></embed>
</object>
私の関数は今のところ信じられないほど単純です。現在、差分プロセス関数を呼び出すマスター プロセス関数があります。この場合、そのうちの 1 つが processYouTubeVideos() です。だから私はそれを次のように呼びます:
$str = eregi_replace('\<youtube=([^>]*)\>', processYouTubeVideos("\\1"), $str);
processYouTubeVideos() は youtube タグ内から完全に URL を受け取りますが、何らかの理由で、explode() (または分割) を使用すると区切り文字が見つかりません。「u」や「tube」などのテスト値を使用しても...
function processYouTubeVideos ($str) {
$params = explode("?", $str);
$params = explode("&", $params[1]);
return $params[0];
}