PHP去掉从word直接粘贴过来的没有用格式的函数


Posted in PHP onOctober 29, 2012

一般处理的方式有二种:1.通过编辑器的JS直接去除。2.提交到后台后,直接用程序去掉无效标签。下面我就分享一个通过PHP的处理方式,成功率可能不是100%。这程序也是在PHP官网上看到的,就顺便粘贴过来了。

function ClearHtml($content,$allowtags='') { mb_regex_encoding('UTF-8'); 
//replace MS special characters first 
$search = array('/‘/u', '/’/u', '/“/u', '/”/u', '/—/u'); 
$replace = array('\'', '\'', '"', '"', '-'); 
$content = preg_replace($search, $replace, $content); 
//make sure _all_ html entities are converted to the plain ascii equivalents - it appears 
//in some MS headers, some html entities are encoded and some aren't 
$content = html_entity_decode($content, ENT_QUOTES, 'UTF-8'); 
//try to strip out any C style comments first, since these, embedded in html comments, seem to 
//prevent strip_tags from removing html comments (MS Word introduced combination) 
if(mb_stripos($content, '/*') !== FALSE){ 
$content = mb_eregi_replace('#/\*.*?\*/#s', '', $content, 'm'); 
} 
//introduce a space into any arithmetic expressions that could be caught by strip_tags so that they won't be 
//'<1' becomes '< 1'(note: somewhat application specific) 
$content = preg_replace(array('/<([0-9]+)/'), array('< $1'), $content); 
$content = strip_tags($content, $allowtags); 
//eliminate extraneous whitespace from start and end of line, or anywhere there are two or more spaces, convert it to one 
$content = preg_replace(array('/^\s\s+/', '/\s\s+$/', '/\s\s+/u'), array('', '', ' '), $content); 
//strip out inline css and simplify style tags 
$search = array('#<(strong|b)[^>]*>(.*?)</(strong|b)>#isu', '#<(em|i)[^>]*>(.*?)</(em|i)>#isu', '#<u[^>]*>(.*?)</u>#isu'); 
$replace = array('<b>$2</b>', '<i>$2</i>', '<u>$1</u>'); 
$content = preg_replace($search, $replace, $content); 
//on some of the ?newer MS Word exports, where you get conditionals of the form 'if gte mso 9', etc., it appears 
//that whatever is in one of the html comments prevents strip_tags from eradicating the html comment that contains 
//some MS Style Definitions - this last bit gets rid of any leftover comments */ 
$num_matches = preg_match_all("/\<!--/u", $content, $matches); 
if($num_matches){ 
$content = preg_replace('/\<!--(.)*--\>/isu', '', $content); 
} 
return $content; 
}

测试使用结果:
<?php 
$content = ' <!--[if gte mso 9]><xml><w:WordDocument><w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel><w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery><w:DisplayVerticalDrawingGridEvery>2</w:DisplayVerticalDrawingGridEvery><w:DocumentKind>DocumentNotSpecified</w:DocumentKind><w:DrawingGridVerticalSpacing>7.8</w:DrawingGridVerticalSpacing><w:View>Normal</w:View><w:Compatibility></w:Compatibility><w:Zoom>0</w:Zoom></w:WordDocument></xml><![endif]--> 
<p class="p0" style="text-indent: 24.0000pt; margin-bottom: 0pt; margin-top: 0pt;"><span style="mso-spacerun: "yes"; font-size: 12.0000pt; font-family: "宋体";">《优伴户外旅行》——让旅行成为习惯!</span></p>越发忙碌的你,是否想给自己放个假?专注工作的你,是否还记得上一次锻炼是什么时候?优伴户外旅行,给你不一样的旅行体验:给心自由,便处处都是风景!</span></p>'; 
echo ClearHtml($content,'<p>'); /* 
得到的结果: 
<p >《优伴户外旅行》--让旅行成为习惯!</p>越发忙碌的你,是否想给自己放个假?专注工作的你,是否还记得上一次锻炼是什么时候?优伴户外旅行,给你不一样的旅行体验:给心自由,便处处都是风景!</p> 
*/ 
?>
PHP 相关文章推荐
php图片上传存储源码并且可以预览
Aug 26 PHP
PHP、Python和Javascript的装饰器模式对比
Feb 03 PHP
php简单统计字符串单词数量的方法
Jun 19 PHP
php把数组值转换成键的方法
Jul 13 PHP
高质量PHP代码的50个实用技巧必备(下)
Jan 22 PHP
实现PHP框架系列文章(6)mysql数据库方法
Mar 04 PHP
Zend Framework教程之Zend_Config_Xml用法分析
Mar 23 PHP
PHP引用的调用方法分析
Apr 25 PHP
php mysql PDO 查询操作的实例详解
Sep 23 PHP
PHP 7.1中AES加解密方法mcrypt_module_open()的替换方案
Oct 17 PHP
PHP数组遍历的几种常见方式总结
Feb 15 PHP
基于thinkphp5框架实现微信小程序支付 退款 订单查询 退款查询操作
Aug 17 PHP
php daddslashes()和 saddslashes()有哪些区别分析
Oct 26 #PHP
PHP daddslashes 使用方法介绍
Oct 26 #PHP
Zend Studio去除编辑器的语法警告设置方法
Oct 24 #PHP
真正根据utf8编码的规律来进行截取字符串的函数(utf8版sub_str )
Oct 24 #PHP
php中检查文件或目录是否存在的代码小结
Oct 22 #PHP
php模拟js函数unescape的函数代码
Oct 20 #PHP
PHP 万年历实现代码
Oct 18 #PHP
You might like
php生成随机密码自定义函数代码(简单快速)
2014/05/10 PHP
PHP 中 Orientation 属性判断上传图片是否需要旋转
2015/10/16 PHP
Yii2简单实现多语言配置的方法
2016/07/23 PHP
PHP实现无限极分类的两种方式示例【递归和引用方式】
2019/03/25 PHP
对textarea框的代码调试,而且功能上使用非常方便,酷
2006/06/30 Javascript
Extjs4中tree的拖拽功能(可以两棵树之间拖拽) 简单实例
2013/12/08 Javascript
PHP中使用微秒计算脚本执行时间例子
2014/11/19 Javascript
JavaScript实现简单的数字倒计时
2015/05/15 Javascript
JavaScript动态添加style节点的方法
2015/06/09 Javascript
js淡入淡出的图片轮播效果代码分享
2015/08/24 Javascript
无缝滚动的简单实现代码(推荐)
2016/06/07 Javascript
jQuery设置单选按钮radio选中/不可用的实例代码
2016/06/24 Javascript
Nodejs进阶:如何将图片转成datauri嵌入到网页中去实例
2016/11/21 NodeJs
详解angularjs中如何实现控制器和指令之间交互
2017/05/31 Javascript
JS请求servlet功能示例
2017/06/01 Javascript
jQuery发请求传输中文参数乱码问题的解决方案
2018/05/22 jQuery
通过实例解析json与jsonp原理及使用方法
2020/09/27 Javascript
[50:29]2014 DOTA2华西杯精英邀请赛 5 24 DK VS iG
2014/05/26 DOTA
python生成器generator用法实例分析
2015/06/04 Python
python嵌套字典比较值与取值的实现示例
2017/11/03 Python
shell命令行,一键创建 python 模板文件脚本方法
2018/03/20 Python
Python结合ImageMagick实现多张图片合并为一个pdf文件的方法
2018/04/24 Python
Python+OpenCv制作证件图片生成器的操作方法
2019/08/21 Python
python实现的分析并统计nginx日志数据功能示例
2019/12/21 Python
python TCP包注入方式
2020/05/05 Python
同步和异步有何异同,在什么情况下分别使用他们
2013/04/09 面试题
参观监狱心得体会
2014/01/02 职场文书
优秀毕业生就业推荐信
2014/05/22 职场文书
学生会辞职信
2015/03/02 职场文书
2015年12.4全国法制宣传日活动总结
2015/03/24 职场文书
领导干部学习三严三实心得体会
2016/01/05 职场文书
80后创业总结的9条职场用人思想,记得收藏
2019/08/13 职场文书
MySQL连接控制插件介绍
2021/09/25 MySQL
SpringDataJPA实体类关系映射配置方式
2021/12/06 Java/Android
SpringBoot集成MongoDB实现文件上传的步骤
2022/04/18 MongoDB
Redis配置外网可访问(redis远程连接不上)的方法
2022/12/24 Redis