前阵子转了几个视频和Flash游戏到Blog上,分别来自不同的网站,播放器也五花八门。但每一个都在页面上占很大的地方不太雅观,而且那个Bloxorz游戏在页面打开时就会自动播放,发出诡异的响声,很是不爽,想弄成像U148那样的可以展开与折叠的效果。在网上找了不少这方面的插件,效果都达不到我的希望,但也收获了一个Audio player插件,嵌入音频很方便。后来我还是用了土办法,研究了一下U148的实现方式,让页面加载一个js文件,然后在文章中嵌入这样的代码:
- <blockquote>
- <a href="javascript:MediaShow('swf','bloxorz','http://cpiz.com/files/bloxorz.swf','500','300');" id="bloxorz_href">播放视频/音频</a>
- <p id="bloxorz"> </p>
- </blockquote>
- 过程是这样子的:
用Google找到了篇在wordpress中使用Javascript的文章,介绍了一种最简单的内容替换插件实现,再结合Audio player的源码,我已经对实现方式有了把握。接下来研究如何使用正则表达式提取[xxxplayer:a=aaa ...]中的属性,我的初衷是希望它可以有很高的兼容性,可以提取类似[xxxplayer:a="aaa;'aaa';aaa" b='b b b' c=ccc ...]这样各种引号形式的标签。我的正则是个半桶水的水平,又趁这机会找了个PHP正则表达式的教程仔细地看了一把,一个小时后还是没写出来。上网搜,两个小时后还是没搜到。看来难度很高,于是退而求次,只解析有双引号括起来的属性。最后在部署插件的时候,发现它根本没按我所想的去工作,在编辑模式下半角输入的双引号,用HTML都成了全角,而且“”"这三种形式的同时存在,百思不得其解。只能再退一步,不给属性加引号了,最后的正则是这样的。
- // 从内容中获得指定属性
- function get_attribute($player_info, $attribute){
- return preg_replace("/(.*)" . $attribute . "([ ]?)=([ ]?)([^ ]*)(.*)/i", "$4", $player_info);
- }
- 使用是这样子的:
- type是媒体类型,支持swf flv mp3 wma wmv rm ra qt
- url是媒体地址
- width是播放器宽度,缺省则为450
- height是播放器高度,缺省则为350
- 效果是这样子的:
[anyplayer:type=swf url=http://cpiz.com/files/bloxorz.swf width=500 height=300]
[anyplayer:type=swf url=http://www.youtube.com/v/flwnaJXi9y0&rel=1 width=425 height=355]
flv:基本上和swf使用一样
[anyplayer:type=flv url=http://www.whosworks.com/upload/20081111992260222.flv width=460 height=330]
mp3:如果不需要皮肤自定义功能的话,可以替下Audio player了,该模式下宽高属性无效
[anyplayer:type=mp3 url=http://bbmedia.qq.com/media/yule/kekewang/music/jindie/sunyanzitonglei.mp3 ]
wma:调用MediaPlayer播放音频,Firefox下要额外插件支持,该模式下宽高属性无效
[anyplayer:type=wma url=http://show.jj.jx.cn/upload_mp3/20071021196261562.wma]
wmv:调用MediaPlayer播放音频,Firefox下要额外插件支持
[anyplayer:type=wmv url=http://mtv26.3378.com.cn/071110/梁静茹_www.3378.com.cn崇拜(完整版).wmv width=460 height=400]