《summernote在线编辑器提交的内容PHP处理其中图片函数》要点:
本文介绍了summernote在线编辑器提交的内容PHP处理其中图片函数,希望对您有用。如果有疑问,可以联系我们。
相关主题:PHP开发 / summernote在线编辑器
在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('#<img [^>]*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*<p>\s*(<br[^<>]*>\s*)+\s*</p>\s*)+#is','', $content); if(!empty($content)) $content = preg_replace('#(?:\s*<p>\s*(<br[^<>]*>\s*)+\s*</p>\s*)+$#is','',$content); //清理前后的空行 $content = trim($content); //移除xss if( !empty($content)) $content = RemoveXSS($content, false, true, ''); return $summernoteUpPics ; }
转载请注明本页网址:
http://www.vephp.com/jiaocheng/54.html