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 相关文章推荐
MYSQL 小技巧 -- LAST_INSERT_ID
Nov 24 PHP
在PHP中检查PHP文件是否有语法错误的方法
Dec 23 PHP
php利用cookie实现访问次数统计代码
May 19 PHP
深入探讨PHP中的内存管理问题
Aug 31 PHP
用PHP写的基于Memcache的Queue实现代码
Nov 27 PHP
php 操作符与控制结构
Mar 07 PHP
php实现cookie加密的方法
Mar 10 PHP
PHP请求远程地址设置超时时间的解决方法
Oct 29 PHP
php reset() 函数指针指向数组中的第一个元素并输出实例代码
Nov 21 PHP
PHP实现深度优先搜索算法(DFS,Depth First Search)详解
Sep 16 PHP
php连接MSsql server的五种方法总结
Mar 04 PHP
Laravel框架实现定时Task Scheduling例子
Oct 22 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
Javascript 解疑
2009/11/11 Javascript
将CKfinder整合进CKEditor3.0的新方法
2010/01/10 Javascript
jqueyr判断checkbox组的选中(示例代码)
2013/11/08 Javascript
为Javascript中的String对象添加去除左右空格的方法(示例代码)
2013/11/30 Javascript
jQuery中:selected选择器用法实例
2015/01/04 Javascript
用JavaScript实现对话框的教程
2015/06/04 Javascript
很实用的js选项卡切换效果
2016/08/12 Javascript
利用jquery实现下拉框的禁用与启用
2016/12/07 Javascript
JavaScript实现图片瀑布流和底部刷新
2017/01/02 Javascript
jQuery验证表单格式的使用方法
2017/01/10 Javascript
详解vue-Resource(与后端数据交互)
2017/01/16 Javascript
js实现打地鼠小游戏
2017/02/13 Javascript
详解Angular 4.x NgTemplateOutlet
2017/05/24 Javascript
Vue实例中生命周期created和mounted的区别详解
2017/08/25 Javascript
react-navigation 如何判断用户是否登录跳转到登录页的方法
2017/12/01 Javascript
Vue实现内部组件轮播切换效果的示例代码
2018/04/07 Javascript
Vue.js 事件修饰符的使用教程
2018/11/01 Javascript
引入外部js脚本加载慢与页面白屏问题的解决
2018/12/10 Javascript
vue中axios请求的封装实例代码
2019/03/23 Javascript
全面了解python中的类,对象,方法,属性
2016/09/11 Python
Python 'takes exactly 1 argument (2 given)' Python error
2016/12/13 Python
Python之reload流程实例代码解析
2018/01/29 Python
详解tensorflow载入数据的三种方式
2018/04/24 Python
Django添加feeds功能的示例
2018/08/07 Python
利用Python计算KS的实例详解
2020/03/03 Python
Python 删除List元素的三种方法remove、pop、del
2020/11/16 Python
HTML5之SVG 2D入门1—SVG(可缩放矢量图形)概述
2013/01/30 HTML / CSS
仿CSDN Blog返回页面顶部功能实现原理及代码
2013/06/30 HTML / CSS
Needle & Thread官网:英国仙女品牌
2018/01/13 全球购物
Osklen官方在线商店:巴西服装品牌
2019/04/25 全球购物
捷克母婴用品购物网站:Feedo.cz
2020/12/28 全球购物
研发工程师的岗位职责
2013/11/18 职场文书
植树节标语
2014/06/27 职场文书
服务宗旨标语
2014/07/01 职场文书
2014年9.18纪念日演讲稿
2014/09/14 职场文书
新郎父亲婚礼致辞
2015/07/27 职场文书