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实现采集程序原理和简单示例代码
Mar 18 PHP
简单介绍下 PHP5 中引入的 MYSQLI的用途
Mar 19 PHP
ajax在joomla中的原生态应用代码
Jul 19 PHP
php中unlink()、mkdir()、rmdir()等方法的使用介绍
Dec 21 PHP
CI框架中site_url()和base_url()的区别
Jan 07 PHP
php结合ACCESS的跨库查询功能
Jun 12 PHP
分享3个php获取日历的函数
Sep 25 PHP
PHP+Mysql+jQuery查询和列表框选择操作实例讲解
Oct 22 PHP
PHP操作mysql数据库分表的方法
Jun 09 PHP
phpStudy中升级MySQL版本到5.7.17的方法步骤
Aug 03 PHP
PhpSpreadsheet中文文档 | Spreadsheet操作教程实例
Apr 01 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加入ftp扩展的解决方法
2013/02/07 PHP
phpstorm编辑器乱码问题解决
2014/12/01 PHP
PHP数学运算与数据处理实例分析
2016/04/01 PHP
Thinkphp 5.0实现微信企业付款到零钱
2018/09/30 PHP
Javascript模板技术
2007/04/27 Javascript
基于jquery的二级联动菜单实现代码
2011/04/25 Javascript
jQuery EasyUI API 中文文档 - Panel面板
2011/09/30 Javascript
js模拟点击事件实现代码
2012/11/06 Javascript
JavaScript设计模式之工厂模式和构造器模式
2015/02/11 Javascript
JS克隆,属性,数组,对象,函数实例分析
2016/11/26 Javascript
Bootstrap源码解读导航(6)
2016/12/23 Javascript
Bootstrap入门教程一Hello Bootstrap初识
2017/03/02 Javascript
微信小程序登录态控制深入分析
2017/04/12 Javascript
微信小程序商品到详情的实现
2017/06/27 Javascript
javaScript中&quot;==&quot;和&quot;===&quot;的区别详解
2018/03/16 Javascript
用图片替换checkbox原始样式并实现同样的功能
2018/11/15 Javascript
Windows下Node爬虫神器Puppeteer安装记
2019/01/09 Javascript
VUE实现自身整体组件销毁的示例代码
2020/01/13 Javascript
nginx配置域名后的二级目录访问不同项目的配置操作
2020/11/06 Javascript
[06:07]DOTA2-DPC中国联赛 正赛 Ehome vs VG 选手采访
2021/03/11 DOTA
python实现文件分组复制到不同目录的例子
2014/06/04 Python
Python中django学习心得
2017/12/06 Python
Python实现自定义顺序、排列写入数据到Excel的方法
2018/04/23 Python
Python中的groupby分组功能的实例代码
2018/07/11 Python
python同步两个文件夹下的内容
2019/08/29 Python
美国男装连锁零售商:Men’s Wearhouse
2016/10/14 全球购物
工商技校毕业生自荐信
2013/11/15 职场文书
俄罗斯商务邀请函
2014/01/26 职场文书
《少年王冕》教学反思
2014/04/11 职场文书
社会工作专业求职信
2014/07/15 职场文书
2014年学校领导班子对照检查材料
2014/09/19 职场文书
2014年计生工作总结
2014/11/21 职场文书
《莫泊桑拜师》教学反思
2016/02/22 职场文书
Python实现文本文件拆分写入到多个文本文件的方法
2021/04/18 Python
浅析Python实现DFA算法
2021/06/26 Python
JS实现简单九宫格抽奖
2022/06/28 Javascript