php 图片在线编辑功能,summernote在线编辑器提交的内容PHP处理其中图片函数

该文章详细介绍了如何在PHP后端处理summernote编辑器提交的内容,特别是针对其中的base64编码图片进行保存,并实现XSS过滤。函数`summernoteEditor()`主要功能包括:1) 将base64图片转存为本地文件;2) 清理无效或非本地存在的图片链接;3) 提供选项进行XSS清理。通过调用此函数,可以确保编辑器内容的安全性和图片的有效保存。
摘要由CSDN通过智能技术生成

《summernote在线编辑器提交的内容PHP处理其中图片函数》要点:

本文介绍了summernote在线编辑器提交的内容PHP处理其中图片函数,希望对您有用。如果有疑问,可以联系我们。

在PHP服务器端,接收到表单中的summernote编辑器数据,需要对其中的图片处理,主要是实现:

1、base64图片处理。

2、空行清理,XSS过滤。

本函数主要是实现功能1,也可以整合功能2,详见参数说明

下面函数说明:

1、mkdirs($imgUploadPath) 是递归创建目录函数,如果不会用到递归多层目录,那么你也可以用mkdir()来代替。

2、常量 WEBROOT 是网站根目录,可以替换成你自己的常量。

3、RemoveXSS()函数是移除XSS,需要改成你自己的。

返回值:

1、直接引用内容所在的内存地址,因此不依靠返回值。调用了函数后,内容会被变更

2、返回值是返回处理了base64的图片后,在服务器本地保存的http路径。可能是“/”路径开头的,也可能是http://开头的。

调用示例:$re = summernoteEditor($content, $this->imgUpPath, $this->imgHttpPath, false);

#其中$re数组保存了处理过base64的图片,包含路径,如果没有处理,则为空数组。$content因地址绑定,后续调用都是处理过的值。

函数代码:

/** 维易php前端summernote编辑器上传内容处理:1、base64图片处理,2、XSS过滤

* 来源: http://www.vephp.com 维易php培训

* 转发请保留网址,尊重别人劳动成果,谢谢!

* @param $content 上传的内容

* @param bool $imgUploadPath  图片上传物理路径,如M:/web/web1/uploads/.... 如果不提供,则不保存base64上传的图片

* @param bool $imgHttpPath  图片的http路径,如果不提供,则不保存base64上传的图片

* @param bool $isClearEmpty 是否处理XSS和空行清理。如果后面用到其它同样功能处理函数,就不需要清理,设置为false

* @param array 返回处理后的图片数组,每列是 最后保存的路径+图片名:

*/

function summernoteEditor(&$content , $imgUploadPath='' ,$imgHttpPath = '' , $isClearEmpty = true)

{

$summernoteUpPics = [];  //经本函数处理的图名最后路径

if(empty($content)) return $summernoteUpPics;

       preg_match_all('#]*src\s*=\s*[\'"]?([^\'"]+)[\'"]?[^>]*>#is',$content,$m);       

if(!empty($m)){

$allowUpload = (!empty($imgUploadPath) && !empty($imgHttpPath));

if($allowUpload){

$imgUploadPath = rtrim($imgUploadPath,'/').'/';

$imgHttpPath = rtrim($imgHttpPath,'/').'/';

}

foreach ($m[1] as $k=>$img){

//保存base64字符串为图片  ......

if (preg_match('/^/', $img, $imginfo))

{

$type = $imginfo[1];

$newImgName = date('YmdHis').random(2).random(2).'.'.$type;

$imgContent = str_replace($imginfo[0], '', $img);

//检查内容是否符合base64格式,

if (!preg_match('/^[a-zA-Z0-9\+\/\=]+$/', $imgContent)) {

$content = str_replace($m[0][$k],'',$content);  //替换掉

continue;

}

if(!is_dir($imgUploadPath)) mkdirs($imgUploadPath);  //创建目录

if($allowUpload && file_put_contents($imgUploadPath.$newImgName, base64_decode($imgContent)) ){

$httpImgPath = $imgHttpPath.$newImgName;

$content = str_replace($img, $httpImgPath ,$content);  //替换掉base64

$summernoteUpPics[] = $httpImgPath;

}else{

$content = str_replace($m[0][$k],'',$content);  //保存失败就清除掉图片

}

}

elseif (preg_match('#^https?:\/\/[a-zA-Z0-9\_\-\.\?\/]+#is', $img, $imginfo))  //正常图片不处理:远程的另有采集处理

{

continue;

}

elseif(!file_exists(WEBROOT.ltrim($img,'/')))

{     //不存在的非正常图片,不是网址,也不是base64,也不在服务器上已存在的(内容编辑时原有图片),就替换掉。

$content = str_replace($m[0][$k],'',$content);

}

}

}

if(!$isClearEmpty) return $summernoteUpPics ;

//移除空行

if(!empty($content)) $content = preg_replace('#^(?:\s*

\s*(
]*>\s*)+\s*

\s*)+#is','', $content);

if(!empty($content)) $content = preg_replace('#(?:\s*

\s*(
]*>\s*)+\s*

\s*)+$#is','',$content);  //清理前后的空行

$content = trim($content);

//移除xss

if( !empty($content)) $content = RemoveXSS($content, false, true, '');

return $summernoteUpPics ;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值