硬汉工作室

搜索
热搜: 活动 交友 discuz

[开发技术] Discuz音频播放使用html5来播放教程

[复制链接]
发表于 2020-12-31 16:14:12 | 显示全部楼层 |阅读模式
我的是discuz3.4,如果要插入音乐的话,编辑器还是使用的flash来播放,但是chrome默认已经屏蔽flash了,所以也就无法播放了。所以我们得改改让它使用html5的audio标签来播放。
找到function_discuzcode.php文件,里面有parseaudio函数,这个是用来解析编辑器里的音频链接的,通过这个函数我们可以看到,它是根据不同的后缀执行不同的方法,我们现在只是说下mp3的链接。

原来如果dz判断是MP3的话,会返回这样的代码: 2020-12-31_161742.jpg
看不懂不要紧,主要是知道,这里会把编辑器里的xxxxx.mp3来替换成上面的代码。其中mp3的链接变量就是$url。我们现在完全可以替换原来的返回内容,我直接该称改了下面这样:
2020-12-31_161806.jpg
这样就是用html5标签来替换原来的flash播放了。

但是还有个问题,手机端无法播放,查看代码才知道,dz在解析时会判断手机端,如果是手机端,那么直接把[audio]标签换成[media]标签,导致手机上直接显示的[media]xxx.mp3[/media],不清楚为啥dz要这么做,改起来其实也很简单,去掉判断手机和pc的代码即可,下面就是判断的代码,你应该知道怎么做的。

  1. if(!defined('IN_MOBILE')) {
  2.         if(strpos($msglower, '[/media]') !== FALSE) {
  3.                 $message = preg_replace_callback("/\[media=([\w,]+)\]\s*([^\[\<\r\n]+?)\s*\[\/media\]/is", $allowmediacode ? 'discuzcode_callback_parsemedia_12' : 'discuzcode_callback_bbcodeurl_2', $message);
  4.         }
  5.         if(strpos($msglower, '[/audio]') !== FALSE) {
  6.                 $message = preg_replace_callback("/\[audio(=1)*\]\s*([^\[\<\r\n]+?)\s*\[\/audio\]/is", $allowmediacode ? 'discuzcode_callback_parseaudio_2' : 'discuzcode_callback_bbcodeurl_2', $message);
  7.         }
  8.         if(strpos($msglower, '[/flash]') !== FALSE) {
  9.                 $message = preg_replace_callback("/\[flash(=(\d+),(\d+))?\]\s*([^\[\<\r\n]+?)\s*\[\/flash\]/is", $allowmediacode ? 'discuzcode_callback_parseflash_234' : 'discuzcode_callback_bbcodeurl_4', $message);
  10.         }
  11. } else {
  12.         if(strpos($msglower, '[/media]') !== FALSE) {
  13.                 $message = preg_replace("/\[media=([\w,]+)\]\s*([^\[\<\r\n]+?)\s*\[\/media\]/is", "[media]\\2[/media]", $message);
  14.         }
  15.         if(strpos($msglower, '[/audio]') !== FALSE) {
  16.                 $message = preg_replace("/\[audio(=1)*\]\s*([^\[\<\r\n]+?)\s*\[\/audio\]/is", "[media]\\2[/media]", $message);
  17.         }
  18.         if(strpos($msglower, '[/flash]') !== FALSE) {
  19.                 $message = preg_replace("/\[flash(=(\d+),(\d+))?\]\s*([^\[\<\r\n]+?)\s*\[\/flash\]/is", "[media]\\4[/media]", $message);
  20.         }
  21. }
复制代码


有关PHP系统、Discuz或网站等各种问题,可以联系QQ1069971363寻求付费支持
Discuz插件商店:http://addon.dismall.com/?@56030.developer
回复

使用道具 举报

QQ|Archiver|手机版|小黑屋|硬汉工作室 ( 冀ICP备13021567号-9 )

GMT+8, 2024-5-19 05:04 , Processed in 0.059553 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表