我正在构建一个应该解析 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>
到目前为止,我的功能非常简单,因为我已经陷入了最简单的部分!现在,我有一个主进程函数,它调用不同的进程函数。在这种情况下,其中之一是 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];
}