《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 ;

}

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

  1. 动易swCMS6.5网站的模板在线编辑功能模块

    动易swCMS6.5网站的模板在线编辑功能模块 动易cms6.5网站的模板文件以文字内容方式保存在数据库中 其好处就是可以通过在线编辑方式修改模板文件, 而无需使用如DW网页制作工具来修改 模板内容读 ...

  2. 在线html差错,易查分在线编辑功能:发现错误随时修改,不用再重新上传表格!

    原标题:易查分在线编辑功能:发现错误随时修改,不用再重新上传表格!

  3. vue实现xml在线编辑功能

    先看效果 避免误会 这是一个在线编辑器 我们可以在这上面随意的编写xml代码格式 我们修改上面的内容之后 就可以在控制台输出内容 如果这正是您想要的东西 那就可以先创建一个vue项目 我们先引入依赖 ...

  4. office在线编辑功能。

    1.需求:在线编辑office文档 2.解决办法:一.使用chrome插件,谷歌文档插件.(问题不能编辑图片,格式可能有问题.) 二.office web apps 服务(未实现). 三,ONLYOF ...

  5. php 图片在线编辑功能,15个强大的在线图片编辑网站

    在线图像编辑类软件是网页应用中较早出现的和比较成熟的在线应用,他们的功能非常强大,有的并不逊色桌面软件,甚至比桌面软件更为强大,这儿为大家做一个最强图像编辑软件大汇总-- 1. CloudCanvas ...

  6. 在线编辑_水墨-在线 Markdown 编辑器

    水墨-在线 Markdown 编辑器 基于 Spring-boot.FreeMarker.layui.Vditor 构建的一款在线 所见即所得的 Markdown 编辑器.水墨-在线 Markdown ...

  7. web页面在线编辑功能

    首先在web.config文件中添加 <system.web> <httpHandlers> <add verb="GET" path="F ...

  8. markdown在线编辑工具,在线渲染,转换html

    今天偶然看到一篇文章,讲的是一个开源的markdown渲染工具Markdeep,它能够将Markdown格式的文本渲染出来,并在网页上展示.另外,Markdeep还支持非markdown格式的纯文本渲 ...

  9. php合同在线签约功能_在线签合同,如何使用电子印章进行签约?

    如今,杭州企业招聘.采购.业务合作等企业日常运作的每一个场景,都会需要用到合同签署,纸质合同签署已经跟不上互联网数字化发展要求的高效便捷的安全需求,相反,纸质合同日积月累带来的管理难.成本高.效率低. ...

最新文章

  1. 分布式系统的发展演变以及RPC简介
  2. LeetCode 1059. 从始点到终点的所有路径(回溯)
  3. python爬虫哪个选择器好用_Python网络爬虫四大选择器用法原理总结
  4. 新手学习python(四)字符串方法
  5. 高中教师计算机技能大赛,计算机科学与技术学院第九届教师技能大赛初赛圆满举行...
  6. docker容器内安装ifconfig netstat ping vim 等测试工具的方法
  7. 蓝桥杯2015年第六届C/C++省赛C组第一题-隔行变色
  8. c#web页面显示弹窗_C# .NET弹出窗口
  9. 干货分享! 20种数学建模方法!
  10. 毕业设计 基于stm32的居民小区火灾检测报警系统 - 物联网 嵌入式
  11. 【Unity Shader】(十) ------ UV动画原理及简易实现
  12. 程序、进程、作业的联系
  13. Mac必备软件之程序员、设计师、产品经理
  14. 铜仁学院官网计算机二级报名,贵州铜仁学院2015年9月全国计算机等级考试报名通知...
  15. Android无网络传输文件之WifiP2P
  16. Modern Family 开篇语
  17. 【附源码】计算机毕业设计SSM小微企业ERP软件物料需求模块设计
  18. P、*P和P三者的区别
  19. 13.6.3 程序案例:BLE低功耗蓝牙调试助手
  20. 第二十四章 Caché 变量大全 $ZA 变量

热门文章

  1. 如何在linux系统下修改mysql密码_如何在linux下修改mysql数据库密码?linux修改数据库密码的方法...
  2. 常见的 IO 模型有哪些?Java 中 BIO、NIO、AIO 的区别?
  3. Tomcat(三):tomcat处理连接的详细过程
  4. 自动化测试工具Cucumber的简单介绍
  5. JDK8 Stream操作 collectingAndThen:根据对象的属性去重
  6. keepalived mysql集群_mysql双主+keepalived实现高可用集群
  7. python+requests+unittest+excel_接口自动化测试 unittest+request+excel(踩‘坑’)
  8. matlab 多个表数据相加,Excel合并计算完成多表格数据汇总求和
  9. 几种常见的攻击方式扫盲(二)——DNS 反射放大攻击
  10. keras中重要的函数用法及参数详解