dede后台添加优酷等视频iframe链接时被替换成了图片

Posted djiz

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了dede后台添加优酷等视频iframe链接时被替换成了图片相关的知识,希望对你有一定的参考价值。

 添加文章时 添加优酷视频 :<iframe height=498 width=510 src=‘技术分享图片http://player.youku.com/embed/XNDAzNTAzODE4OA==‘ frameborder=0 ‘allowfullscreen‘></iframe> 

提交后被替换成 

<iframe frameborder="0" height="498" src="/uploads/allimg/190128/1U9241554-1.jpg" width="510"></iframe>

经测试,发现问题出在保存之前对body内容的处理上 

//远程图片本地化

if($remote==1)
{
    $body = GetCurContent($body);   //dede/inc/inc_archives_functions.php 644行  
}

 

把函数GetCurContent做如下修改可暂时解决(未侧式是否会引起其他问题,应该把所有的图片格式都枚举出来)

/**
 * 获得文章body里的外部资源
 *
 * @access    public
 * @param     string  $body  文档内容
 * @return    string
 */
function GetCurContent($body)
{
    global $cfg_multi_site,$cfg_basehost,$cfg_basedir,$cfg_image_dir,$arcID,$cuserLogin,$dsql;
    $cfg_uploaddir = $cfg_image_dir;
    $htd = new DedeHttpDown();
    $basehost = "http://".$_SERVER["HTTP_HOST"];
    $img_array = array();
    preg_match_all("/src=["|‘|s]([^"|^‘|^s]*?)/isU",$body,$img_array);
    
    $img_array = array_unique($img_array[1]);
    $imgUrl = $cfg_uploaddir./.MyDate("ymd", time());
    $imgPath = $cfg_basedir.$imgUrl;
    if(!is_dir($imgPath./))
    {
        MkdirAll($imgPath, $GLOBALS[cfg_dir_purview]);
        CloseFtp();
    }
    $milliSecond = MyDate(His,time());
    foreach($img_array as $key=>$value)
    {
        if(preg_match("#".$basehost."#i", $value))
        {
            continue;
        }
        if($cfg_basehost != $basehost && preg_match("#".$cfg_basehost."#i", $value))
        {
            continue;
        }
        if(!preg_match("#^(http|https)://#i", $value))
        {
            continue;
        }
        $htd->OpenUrl($value);

        $itype = $htd->GetHead("content-type");
        $itype = substr($value, -4, 4);
        if(!preg_match("#.(jpg|gif|png)#i", $itype))
        {
            if($itype==image/gif)
            {
                $itype = ".gif";
            }
            else if($itype==image/png)
            {
                $itype = ".png";
            }else if($itype==‘image/jpg‘){  //不知道jpeg格式的是否一样,如果不一样还得增加jpeg判断
                $itype = ‘.jpg‘;
            }
            else
            {
                continue;  //原函数未处理没有后缀名的情况,应该在这里判断视频或者。。。。。。,这样写将不再解析除了 gif png jpg 以外的图片格式,如 bmp
            }
        }
        $milliSecondN = dd2char($milliSecond.mt_rand(1000, 8000));
        $value = trim($value);
        $rndFileName = $imgPath./.$milliSecondN.-.$key.$itype;
        $fileurl = $imgUrl./.$milliSecondN.-.$key.$itype;

        $rs = $htd->SaveToBin($rndFileName);
        if($rs)
        {
            $info = ‘‘;
            $imginfos = GetImageSize($rndFileName, $info);
            $fsize = filesize($rndFileName);
            //保存图片附件信息
            $inquery = "INSERT INTO `#@__uploads`(arcid,title,url,mediatype,width,height,playtime,filesize,uptime,mid)
            VALUES ({$arcID},$rndFileName,$fileurl,1,{$imginfos[0]},$imginfos[1],0,$fsize,".time().",".$cuserLogin->getUserID()."); ";
            $dsql->ExecuteNoneQuery($inquery);
            $fid = $dsql->GetLastID();
            AddMyAddon($fid, $fileurl);
            if($cfg_multi_site == Y)
            {
                $fileurl = $cfg_basehost.$fileurl;
            }
            $body = str_replace($value, $fileurl, $body);
            @WaterImg($rndFileName, down);
        }
    }
    $htd->Close();
    return $body;
}

 

以上是关于dede后台添加优酷等视频iframe链接时被替换成了图片的主要内容,如果未能解决你的问题,请参考以下文章

帝国CMS下iframe标签无法引入视频,ueditor编辑器中html标签无法显示问题,设置ueditor默认行高为1.75

阿里百度优酷等多家公司Java面试记录与总结

工作中开发的部分测试软件

dedecms在后台替换文章标题内容摘要关键字

WordPress解决优酷土豆视频移动端观看问题并自适应

百度编辑器UEditor不能插入视频的解决方法