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 05 PHP
一个比较简单的PHP 分页分组类
Dec 10 PHP
php变量范围介绍
Oct 15 PHP
PHP中的函数-- foreach()的用法详解
Jun 24 PHP
php读取目录所有文件信息dir示例
Mar 18 PHP
php实现屏蔽掉黑帽SEO的搜索关键字
Apr 15 PHP
php实现简易聊天室应用代码
Sep 23 PHP
使用ltrace工具跟踪PHP库函数调用的方法
Apr 25 PHP
PHP版单点登陆实现方案的实例
Nov 17 PHP
[原创]php集成安装包wampserver修改密码后phpmyadmin无法登陆的解决方法
Nov 23 PHP
php抽象方法和抽象类实例分析
Dec 07 PHP
基于Laravel 多个中间件的执行顺序详解
Oct 21 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 5.5 创建和验证哈希最简单的方法详解
2013/11/07 PHP
PHP聚合式迭代器接口IteratorAggregate用法分析
2017/12/28 PHP
php JWT在web端中的使用方法教程
2018/09/06 PHP
基于jQuery的弹出消息插件 DivAlert之旅(一)
2010/04/01 Javascript
javascript和HTML5利用canvas构建猜牌游戏实现算法
2013/07/17 Javascript
用javascript替换URL中的参数值示例代码
2014/01/27 Javascript
深入理解javascript的执行顺序
2014/04/04 Javascript
使用jQuery异步加载 JavaScript脚本解决方案
2014/04/20 Javascript
javascript实现淡蓝色的鼠标拖动选择框实例
2015/05/09 Javascript
深入浅出理解javaScript原型链
2015/05/09 Javascript
bootstrap flask登录页面编写实例
2016/11/01 Javascript
原生的强大DOM选择器querySelector介绍
2016/12/21 Javascript
Angular.js基础学习之初始化
2017/03/10 Javascript
xmlplus组件设计系列之选项卡(Tabbar)(5)
2017/05/03 Javascript
解决ie img标签内存泄漏的问题
2017/10/13 Javascript
vue2.0 常用的 UI 库实例讲解
2017/12/12 Javascript
js中el表达式的使用和非空判断方法
2018/03/28 Javascript
实例讲解JavaScript截取字符串
2018/11/30 Javascript
JavaScript禁用右键单击优缺点分析
2019/01/20 Javascript
详解Webpack4多页应用打包方案
2020/07/16 Javascript
[51:30]OG vs LGD 2018国际邀请赛淘汰赛BO3 第二场 8.26
2018/08/30 DOTA
python中学习K-Means和图片压缩
2017/11/20 Python
浅谈python numpy中nonzero()的用法
2018/04/02 Python
一百行python代码将图片转成字符画
2021/02/19 Python
TensorFlow tensor的拼接实例
2020/01/19 Python
Python龙贝格法求积分实例
2020/02/29 Python
基于opencv的selenium滑动验证码的实现
2020/07/24 Python
Anaconda+spyder+pycharm的pytorch配置详解(GPU)
2020/10/18 Python
python读写数据读写csv文件(pandas用法)
2020/12/14 Python
CSS教程:CSS3圆角属性
2009/04/02 HTML / CSS
用HTML5实现鼠标滚轮事件放大缩小图片的功能
2015/06/25 HTML / CSS
墨西哥运动服饰和鞋网上商店:Netshoes墨西哥
2016/07/28 全球购物
美国花布包包品牌:Vera Bradley
2017/08/11 全球购物
大四毕业生学习总结的自我评价
2013/10/31 职场文书
springcloud整合seata
2022/05/20 Java/Android
nginx配置指令之server_name的具体使用
2022/08/14 Servers