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 相关文章推荐
初学CAKEPHP 基础教程
Nov 02 PHP
php中关于codeigniter的xmlrpc的类在进行数据交换时的类型问题
Jul 03 PHP
PHP系列学习之日期函数使用介绍
Aug 18 PHP
解析PHP 5.5 新特性
Jul 02 PHP
Smarty foreach控制循环次数的实现详解
Jul 03 PHP
PHP中使用asort进行中文排序失效的问题处理
Aug 18 PHP
使用PHP和HTML5 FormData实现无刷新文件上传教程
Sep 06 PHP
C# WinForm中实现快捷键自定义设置实例
Jan 23 PHP
yii2中结合gridview如何使用modal弹窗实例代码详解
Jun 12 PHP
PHP实现页面静态化的超简单方法
Sep 06 PHP
php注册系统和使用Xajax即时验证用户名是否被占用
Aug 31 PHP
php去除deprecated的实例方法
Nov 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
如何用C语言编写PHP扩展的详解
2013/06/13 PHP
destoon二次开发入门示例
2014/06/20 PHP
PHP中可以自动分割查询字符的Parse_str函数使用示例
2014/07/25 PHP
PHP实现的登录,注册及密码修改功能分析
2016/11/25 PHP
PHP远程连接oracle数据库操作实现方法图文详解
2019/04/11 PHP
PHP中Session ID的实现原理实例分析
2019/08/17 PHP
firefox 和 ie 事件处理的细节,研究,再研究 书写同时兼容ie和ff的事件处理代码
2007/04/12 Javascript
转换json格式的日期为Javascript对象的函数
2010/07/13 Javascript
JS原型对象通俗&quot;唱法&quot;
2012/12/27 Javascript
使用JS+plupload直接批量上传图片到又拍云
2014/12/01 Javascript
给before和after伪元素设置js效果的方法
2015/12/04 Javascript
JavaScript实现弹出DIV层同时页面背景渐变成半透明效果
2016/03/25 Javascript
javascript的列表切换【实现代码】
2016/05/03 Javascript
老生常谈JavaScript 函数表达式
2016/09/01 Javascript
基于JS实现回到页面顶部的五种写法(从实现到增强)
2016/09/03 Javascript
Angular2使用Angular CLI快速搭建工程(一)
2017/05/21 Javascript
基于nodejs 的多页面爬虫实例代码
2017/05/31 NodeJs
通过函数作用域和块级作用域看javascript的作用域链
2018/08/05 Javascript
vue中组件通信的八种方式(值得收藏!)
2019/08/09 Javascript
Vue使用Clipboard.JS在h5页面中复制内容实例详解
2019/09/03 Javascript
element-ui table组件如何使用render属性的实现
2019/11/04 Javascript
[04:07]显微镜下的DOTA2第八期——英雄复活动作
2014/06/24 DOTA
Django中实现点击图片链接强制直接下载的方法
2015/05/14 Python
python 移动图片到另外一个文件夹的实例
2019/01/10 Python
带你认识Django
2019/01/15 Python
Python decorator拦截器代码实例解析
2020/04/04 Python
python实现简单学生信息管理系统
2020/04/09 Python
python使用numpy中的size()函数实例用法详解
2021/01/29 Python
NFL加拿大官方网上商店:NHLShop.ca
2019/03/12 全球购物
俄罗斯香水和化妆品网上商店:NOTINO.ru
2019/12/17 全球购物
知识竞赛主持词
2014/03/26 职场文书
《周恩来的四个昼夜》观后思想汇报范文两篇
2014/09/10 职场文书
政风行风自查自纠报告
2014/10/21 职场文书
2014全年工作总结
2014/11/27 职场文书
Spring Boot接口定义和全局异常统一处理
2022/04/20 Java/Android
Win11怎么解除儿童账号限制?Win11解除微软儿童账号限制方法
2022/07/07 数码科技