解决discuz论坛里视频无法在手机或微信里播放

发布日期:2017-10-15 浏览量:1428 次
  • 使用discuz论坛,如果帖子里面含有flash视频,当在手机上浏览的时候,并不能显示视频出来,而是直接显示视频的原URL地址。下面,我们就来解决这个问题。

    注意:我升级了discuz论坛程序,当前版本是3.3,别改错了!

    打开source/function/function_discuzcode.php,大概在205行

    if(strpos($msglower, '[/flash]') !== FALSE) {
        $message = preg_replace("/\[flash(=(\d+),(\d+))?\]\s*([^\[\<\r\n]+?)\s*\[\/flash\]/is", "[media]\\4[/media]", $message); }

    通过这段可以发现,论坛代码只是把[flash]标签中的内容直接显示出来了,我们只要进行相应的修改即可:

    if(strpos($msglower, '[/flash]') !== FALSE) {
               $message = preg_replace_callback(
                        "/\[flash(=(\d+),(\d+))?\]\s*([^\[\<\r\n]+?)\s*\[\/flash\]/is", 'discuzcode_callback_parseflash_h5', $message); }

    在当前页面最后,新增加函数:discuzcode_callback_parseflash_h5

    function discuzcode_callback_parseflash_h5($matches) {
        return '< iframe style="width:100%;height:280px;" src="'.getH5Url($matches[4]).'" data-ke-src="'.getH5Url($matches[4]).'" scrolling="no" frameborder="0" allowfullscreen>no iframe';
    }

    再通过解析出来的视频地址,添加转换函数:getH5Url

    function getH5Url($url) {
        if (stripos($url, 'youku') !== false) {
            $pattern = "/id_(.*?)\.html|sid\/(.*?)\/v/";
            preg_match($pattern, $url, $result);
            if($result){
                $url = 'http://player.youku.com/embed/' . ($result[1] ?: $result[2]);
            }
        } elseif (stripos($url, 'qq.com') !== false) {
            $pattern = "/vid=(.*?)\&/";
            preg_match($pattern, $url, $result);
            if($result){
                $url = 'https://v.qq.com/iframe/player.html?vid='.($result[1] ?: $result[2]).'&tiny=0&auto=0';
            }
        }
        return $url;
    }

    上面的代码里,我只使用了优酷和QQ视频,其他vwin德赢app下载的大家只要找到转换规律自己添加上即可。

    最后后,要想discuz论坛的微社区中也能正常播放视频的话,还需要修改source/plugin/mobile/discuzcode.func.php文件中的129行,找到如下代码并注释掉。

    if(strpos($msglower, '[/flash]') !== FALSE) {
        $message = preg_replace_callback("/\[flash(=(\d+),(\d+))?\]\s*([^\[\<\r\n]+?)\s*\[\/flash\]/is", 'mobile_discuzcode_callback_bbcodeurl_4', $message); }

    记住,修改前记得备份文件!!!

    至此,discuz论坛帖子里面的视频可以在手机浏览器或微信中访问了!