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程序中的常见漏洞进行攻击
Oct 09 PHP
php生成SessionID和图片校验码的思路和实现代码
Mar 10 PHP
从Web查询数据库之PHP与MySQL篇
Sep 25 PHP
php操作sqlserver关于时间日期读取的小小见解
Nov 29 PHP
linux系统上支持php的 iconv()函数的方法
Oct 01 PHP
深入php-fpm的两种进程管理模式详解
Jun 03 PHP
LAMP环境使用Composer安装Laravel的方法
Mar 25 PHP
PHP聊天室简单实现方法详解
Dec 08 PHP
PHP+Oracle本地开发环境搭建方法详解
Apr 01 PHP
Laravel 自定命令以及生成文件的例子
Oct 23 PHP
thinkPHP框架乐观锁和悲观锁实例分析
Oct 30 PHP
php设计模式之正面模式实例分析【星际争霸游戏案例】
Mar 24 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运行速度的一些小技巧分享
2012/07/03 PHP
PHP单链表的实现代码
2016/07/05 PHP
PHP的中使用非缓冲模式查询数据库的方法
2017/02/05 PHP
Yii框架布局文件的动态切换操作示例
2019/11/11 PHP
深入理解PHP+Mysql分布式事务与解决方案
2020/12/03 PHP
Js从头学起(基本数据类型和引用类型的参数传递详细分析)
2012/02/16 Javascript
jquery删除提示框弹出是否删除对话框
2014/01/07 Javascript
Iframe 自动适应页面的高度示例代码
2014/02/26 Javascript
javascript实现点击单选按钮链接转向对应网址的方法
2015/08/12 Javascript
AngularJS使用ngOption实现下拉列表的实例代码
2016/01/23 Javascript
使用three.js 画渐变的直线
2016/06/05 Javascript
Angular2表单自定义验证器的实现
2016/10/19 Javascript
浅析上传头像示例及其注意事项
2016/12/14 Javascript
js实现自动轮换选项卡
2017/01/13 Javascript
JavaScript基本类型值-Undefined、Null、Boolean
2017/02/23 Javascript
vue用Object.defineProperty手写一个简单的双向绑定的示例
2018/07/09 Javascript
vue自定义移动端touch事件之点击、滑动、长按事件
2018/07/10 Javascript
JS canvas绘制五子棋的棋盘
2020/05/28 Javascript
详解webpack打包后如何调试的方法步骤
2018/11/07 Javascript
微信小程序使用map组件实现解析经纬度功能示例
2019/01/22 Javascript
ionic2.0双击返回键退出应用
2019/09/17 Javascript
Element Collapse 折叠面板的使用方法
2020/07/26 Javascript
python编写朴素贝叶斯用于文本分类
2017/12/21 Python
基于python绘制科赫雪花
2018/06/22 Python
python匹配两个短语之间的字符实例
2018/12/25 Python
使用python PIL库实现简单验证码的去噪方法步骤
2019/05/10 Python
简单了解python的一些位运算技巧
2019/07/13 Python
Python 实现遥感影像波段组合的示例代码
2019/08/04 Python
python实现音乐播放器 python实现花框音乐盒子
2020/02/25 Python
Python matplotlib实时画图案例
2020/04/23 Python
Html5之svg可缩放矢量图形_动力节点Java学院整理
2017/07/17 HTML / CSS
松材线虫病防治方案
2014/06/15 职场文书
销售代理协议书
2014/09/30 职场文书
拾金不昧表扬稿
2015/01/16 职场文书
九九重阳节致辞
2015/07/31 职场文书
码云(gitee)通过git自动同步到阿里云服务器
2022/12/24 Servers