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 相关文章推荐
福利彩票幸运号码自动生成器
Oct 09 PHP
PHP 开发工具
Dec 06 PHP
php判断终端是手机还是电脑访问网站的思路及代码
Apr 24 PHP
浅析php变量作用域的一些问题
Aug 08 PHP
php遍历文件夹下的所有文件和子文件夹示例
Mar 20 PHP
神盾加密解密教程(二)PHP 神盾解密
Jun 08 PHP
PHP+ajaxfileupload+jcrop插件完美实现头像上传剪裁
Jun 09 PHP
PHP简单实现数字分页功能示例
Aug 24 PHP
PHP入门教程之PHP操作MySQL的方法分析
Sep 11 PHP
php获取服务器操作系统相关信息的方法
Oct 08 PHP
PHP基于curl后台远程登录正方教务系统的方法
Oct 14 PHP
PHP 获取客户端 IP 地址的方法实例代码
Nov 11 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
thinkphp配置连接数据库技巧
2014/12/02 PHP
PHP对称加密算法(DES/AES)类的实现代码
2017/11/14 PHP
Laravel框架实现的批量删除功能示例
2019/01/16 PHP
JavaScript-世界上误解最深的语言分析
2007/08/12 Javascript
jquery实现的树形目录实例
2015/06/26 Javascript
基于jquery实现页面滚动到底自动加载数据的功能
2015/12/19 Javascript
AngularJS基础 ng-mouseover 指令简单示例
2016/08/02 Javascript
使用Curl命令查看请求响应时间方法
2016/11/04 Javascript
AngularJS自定义插件实现网站用户引导功能示例
2016/11/07 Javascript
js实现五星评价功能
2017/03/08 Javascript
Node.JS更改Windows注册表Regedit的方法小结
2017/08/18 Javascript
捕获未处理的Promise错误方法
2017/10/13 Javascript
Angular实现较为复杂的表格过滤,删除功能示例
2017/12/23 Javascript
vue-cli3.0配置及使用注意事项详解
2018/09/05 Javascript
微信小程序实现的五星评价功能示例
2019/04/25 Javascript
基于Vue实现的多条件筛选功能的详解(类似京东和淘宝功能)
2019/05/07 Javascript
javascript数组的定义及操作实例
2019/11/10 Javascript
vuex实现购物车的增加减少移除
2020/06/28 Javascript
请求时token过期自动刷新token操作
2020/09/11 Javascript
详解ES6中class的实现原理
2020/10/03 Javascript
Python break语句详解
2014/03/11 Python
Ubuntu 14.04+Django 1.7.1+Nginx+uwsgi部署教程
2014/11/18 Python
centos 下面安装python2.7 +pip +mysqld
2014/11/18 Python
python中os操作文件及文件路径实例汇总
2015/01/15 Python
Python爬虫爬取美剧网站的实现代码
2016/09/03 Python
Python实现深度遍历和广度遍历的方法
2019/01/22 Python
详解python tkinter模块安装过程
2020/01/06 Python
python3.8下载及安装步骤详解
2020/01/15 Python
企划主管岗位职责
2013/12/12 职场文书
物理专业大学生职业生涯规划书
2014/02/07 职场文书
小学先进集体事迹材料
2014/05/31 职场文书
超市理货员岗位职责
2014/07/04 职场文书
小学生纪念九一八事变演讲稿
2014/09/14 职场文书
2014年团工作总结
2014/11/27 职场文书
狮子林导游词
2015/02/03 职场文书
老公保证书怎么写
2015/02/26 职场文书