php实现word转html文档的例子

 更新时间:2016年11月25日 15:36  点击:1484
word文档不适合放到网页上了,如果我们要放到网页中去是需要一个个复制了,如果你还在复制就out了,下文小编来为各位整理一篇php实现word转html文档的例子,希望文章对各位有帮助。

要想完美解决,office转pdf或者html,最好还是用windows office软件,libreoffice不能完美转换,wps没有api。

先确认com模块是不是开启,phpinfo里面如果有com_dotnet模块,说明已开启,如果没有,修改php.ini,
com.allow_dcom = true

前面的注释去掉,重启就OK了,php官方网站说,php5.4.5之前,com模块是内置的,其实也不一定全是,官网下的php 5.3.39,com模块就没有内置。

如果不是内置模块的话,php.ini加上,前提你的ext文件夹下,有该扩展

extension=php_com_dotnet.dll

然后重启就OK了


function word2html($wordname,$htmlname) 
 { 
 $word = new COM("word.application") or die("Unable to instanciate Word"); 
 $word->Visible = 1; 
 $word->Documents->Open($wordname); 
 $word->Documents[1]->SaveAs($htmlname,8); 
 $word->Quit(); 
 $word = null; 
 unset($word); 
 } 
 
word2html('D:/www/test/6.docx','D:/www/test/6.html'); 

注意:

1,转换出来的html,查看源码,比较乱的
2,转换过程中会调用winword.exe
3,如果页面一直在加载,把文档重命名,然后在重新转。

补充一个例子


function lego_clean($text) {  
 
    $text = implode("\r",$text);  
 
    // normalize white space  
    $text = eregi_replace("[[:space:]]+", " ", $text);  
    $text = str_replace("> <",">\r\r<",$text);  
    $text = str_replace("<br>","<br>\r",$text);  
 
    // remove everything before <body>  
    $text = strstr($text,"<body");  
 
    // keep tags, strip attributes  
    $text = ereg_replace("<p [^>]*BodyTextIndent[^>]*>([^\n|\n\015|\015\n]*)</p>","<p>\\1</p>",$text);  
    $text = eregi_replace("<p [^>]*margin-left[^>]*>([^\n|\n\015|\015\n]*)</p>","<blockquote>\\1</blockquote>",$text);  
    $text = str_replace(" ","",$text);  
 
    //clean up whatever is left inside <p> and <li>  
    $text = eregi_replace("<p [^>]*>","<p>",$text);  
    $text = eregi_replace("<li [^>]*>","<li>",$text);  
 
    // kill unwanted tags  
    $text = eregi_replace("</?span[^>]*>","",$text);  
    $text = eregi_replace("</?body[^>]*>","",$text);  
    $text = eregi_replace("</?div[^>]*>","",$text);  
    $text = eregi_replace("<\![^>]*>","",$text);  
    $text = eregi_replace("</?[a-z]\:[^>]*>","",$text);  
 
    // kill style and on mouse* tags  
    $text = eregi_replace("([ \f\r\t\n\'\"])style=[^>]+", "\\1", $text);  
    $text = eregi_replace("([ \f\r\t\n\'\"])on[a-z]+=[^>]+", "\\1", $text);  
 
    //remove empty paragraphs  
    $text = str_replace("<p></p>","",$text);  
 
    //remove closing </html>  
    $text = str_replace("</html>","",$text);  
 
    //clean up white space again  
    $text = eregi_replace("[[:space:]]+", " ", $text);  
    $text = str_replace("> <",">\r\r<",$text);  
    $text = str_replace("<br>","<br>\r",$text);  

在php中如果要替换所有空格我们有很多的方法,也有系统自带的函数了,但如果去除头尾空格好像是有一些区别了,下面我们来看3个php中去掉头尾空格例子.

看似很简单的问题,其实还是有点坑的,首先这里&nbsp;空格转义,不是字符串,直接用trim()是去不掉。


1,用preg_replace替换


$test = "&nbsp;dfadad&nbsp;论责民与三英的关系775fd&nbsp;&nbsp; "; 
$test = preg_replace('/^(&nbsp;|\s)*|(&nbsp;|\s)*$/', '', $test); 
var_dump($test); 
 
//结果如下: 
 
string 'dfadad&nbsp;论责民与三英的关系775fd' (length=35) 
这个方法是群里面的小伙伴提供的,在此表示感谢。推荐这种方法,具有通用性

2,trim方法


$test = "&nbsp;dfadad&nbsp;3333adf775fd&nbsp;&nbsp;"; 
$test = trim(html_entity_decode($test),chr(0xc2).chr(0xa0)); 
var_dump($test); 
 
//结果如下: 
 
string 'dfadad 3333adf775fd' (length=19) 
 这个方法,是从php的官方手册中找的,如果是utf8编码的话,用这个方法,没什么问题。如果GBK,GB2312,就会出现乱码。还有就是json_encode,这个函数如果是gbk,gb2312的话,中文字符会被替换成null。推荐使用utf8的编码

3,php去除字符串首尾空格(包括全角)

<?
$str="     一聚教程网 www.111cn.net     ";
$str = mb_ereg_replace('^( | )+', '', $str);
$str = mb_ereg_replace('( | )+$', '', $str);
echo mb_ereg_replace('  ', "\n  ", $str);
?>

Laravel是一套简洁、优雅的PHP Web开发框架(PHP Web Framework)。它可以让你从面条一样杂乱的代码中解脱出来;它可以帮你构建一个完美的网络APP了,下面我们来看看laravel excel包使用教程

laravel中excel插件的安装

在composer中引入laravel excel的包

    "maatwebsite/excel": "1.*"
在位于laravel/app/config下编辑app.php文件,在providers数组中添加以下值

    'Maatwebsite\Excel\ExcelServiceProvider',
在同文件中找到aliasses数组添加以下值

    'Excel' => 'Maatwebsite\Excel\Facades\Excel',
执行composer install 或 composer update命令.

laravel excel的配置

在位于laravel/vendor/maatwebsite/excel/src/config下一些对于插件的一些配置项

config.php > 对excel和表全局的一些设置
csv.php > 对导入导出csv文件的设置
export.pho > 对打印出文件内容的一些设置
import.php > 对导入excel文件的设置

laravel excel的简单使用

在之前的准备工作都做好了以后我们就可以用excel插件了

导出excel

<?php
$rows = array( array( 'id' => 1, 'name' => 'marlon' ) );

Excel::create($name, function($excel) use ($rows) {
    $excel->sheet('当天报名', function($sheet) use ($rows) {
        $sheet->fromArray($rows);
    });
})->store('xls', storage_path('excel'));

由于在php闭包中无法拿到闭包外的变量,所以需要用use把$rows引入进去,在最后的链式调用的store中所传的参数就是所需excel的格式和要保存到服务器的位置,此为绝对路径.

在这个地方store()方法为存储,相对应的还可以使用download()方法来直接下载,至于export方法笔者还没搞懂用处是什么

导入excel

<?php
Excel::load(Input::file('excel'), function($reader) {
    //获取excel的第几张表
    $reader = $reader->getSheet(0);
    //获取表中的数据
    $results = $reader->toArray();
    //在这里的时候$results 已经是excel中的数据了,可以再这里对他进行操作,入库或者其他....
});

下文来为各位介绍PHP设置session定期自动清理的例子了,因为session默认是15分钟自动把变量给清除内存了,但有一些时间并不生效了,下面我们就来看看.

配置完成php后,默认php会将session生成到/tmp目录下,导致/tmp目录文件很多,因此需要对session进行定期的清理:

修改php.ini:

[root@hz scripts]# grep "session.save_path = " /usr/local/php/lib/php.ini
;     session.save_path = "N;/path"
;     session.save_path = "N;MODE;/path"
;session.save_path = "/tmp"
session.save_path = "2;/tmp/session"
[root@hz ~]# cat /byrd/script/Cleartmpsen.sh
#!/bin/bash
# Version:1.0
# Author:Byrd
# Site:www.t4x.org
# Contact:root#t4x.org

# This is script will clear php session before 3 hours.
i="0 1 2 3 4 5 6 7 8 9 a b c d e f"
for byrd in $i;
do
    for x in $i;
    do
        mkdir -p /tmp/session/$byrd/$x;
    done;
done
chown -R bywww:bywww /tmp/session
chmod -R 1777 /tmp/session
find /tmp/session -amin +180 -exec rm -rf {} \;
if [ `grep 'session.save_path =' /usr/local/php/lib/php.ini | wc -l` -eq 3 ];then
    sed -i 's#;session.save_path = "/tmp"#;session.save_path = "/tmp"\nsession.save_path = "2;/tmp/session"#g' /usr/local/php/lib/php.ini
else
    exit 1
fi

定时任务:

[root@hz scripts]# echo '#This is a config php session BY:BYRD AT:2014-03-31' >>/var/spool/cron/root
[root@hz scripts]# echo '0 3 * * 0 /bin/bash /byrd/scripts/spehspsion.sh >/dev/null 2>&1' >>/var/spool/cron/root


备注:因为此配置修改了php.ini因此需要重新启动php进程。

301跳转必须由程序或服务器来实现,如果是页面跳转可以使用js或页面html来实现,下面我们先来介绍页面跳转,然后再介绍301跳转了.


一般情况下,此类跳转是302跳转,只是暂时性跳转,如果需要进行永久重写向(SEO上比较有用),可如下实现:

header("HTTP/1.1 301 Moved Permanently");
header("Location: redirect.php");


平时我们使用html做页面的时候,都会碰到定时刷新,可以看到如下标签:

<meta http-equiv="Refresh" content="2;url='refresh.php'">

表示每隔两秒刷新一次页面,实际上是重定向到页面。

由此,PHP根据HTTP协议,可以如下实现:

header( "refresh:2;url=refresh.php" );

1.window.location.href方式
    <script language="javascript" type="text/javascript">
           window.location.href="target.aspx";
    </script>

2.window.navigate方式跳转
   <script language="javascript">
    window.navigate("target.aspx");
</script>

 

3.window.loction.replace方式实现页面跳转,注意跟第一种方式的区别
<script language="javascript">
    window.location.replace("target.aspx");
</script>
有3个jsp页面(1.aspx, 2.aspx, 3.aspx),进系统默认的是1.aspx,当我进入2.aspx的时候, 2.aspx里面用window.location.replace("3.aspx");

与用window.location.href ("3.aspx");

从用户界面来看是没有什么区别的,但是当3.aspx页面有一个"返回"按钮,调用window.history.go(-1); wondow.history.back();方法的时候,一点这个返回按钮就要返回2.aspx页面的话,区别就出来了,当用 window.location.replace("3.aspx");连到3.aspx页面的话,3.aspx页面中的调用 window.history.go(-1);wondow.history.back();方法是不好用的,会返回到1.aspx。

4.self.location方式实现页面跳转,和下面的top.location有小小区别
   <script language="JavaScript">
          self.location='target.aspx';
   </script>

5.top.location
   <script language="javascript">
          top.location='target.aspx';
   </script>

[!--infotagslink--]

相关文章

  • php语言实现redis的客户端

    php语言实现redis的客户端与服务端有一些区别了因为前面介绍过服务端了这里我们来介绍客户端吧,希望文章对各位有帮助。 为了更好的了解redis协议,我们用php来实现...2016-11-25
  • jQuery+jRange实现滑动选取数值范围特效

    有时我们在页面上需要选择数值范围,如购物时选取价格区间,购买主机时自主选取CPU,内存大小配置等,使用直观的滑块条直接选取想要的数值大小即可,无需手动输入数值,操作简单又方便。HTML首先载入jQuery库文件以及jRange相关...2015-03-15
  • php中去除文字内容中所有html代码

    PHP去除html、css样式、js格式的方法很多,但发现,它们基本都有一个弊端:空格往往清除不了 经过不断的研究,最终找到了一个理想的去除html包括空格css样式、js 的PHP函数。...2013-08-02
  • JS实现的简洁纵向滑动菜单(滑动门)效果

    本文实例讲述了JS实现的简洁纵向滑动菜单(滑动门)效果。分享给大家供大家参考,具体如下:这是一款纵向布局的CSS+JavaScript滑动门代码,相当简洁的手法来实现,如果对颜色不满意,你可以试着自己修改CSS代码,这个滑动门将每一...2015-10-21
  • jQuery+slidereveal实现的面板滑动侧边展出效果

    我们借助一款jQuery插件:slidereveal.js,可以使用它控制面板左右侧滑出与隐藏等效果,项目地址:https://github.com/nnattawat/slideReveal。如何使用首先在页面中加载jquery库文件和slidereveal.js插件。复制代码 代码如...2015-03-15
  • PHP+jQuery翻板抽奖功能实现

    翻板抽奖的实现流程:前端页面提供6个方块,用数字1-6依次表示6个不同的方块,当抽奖者点击6个方块中的某一块时,方块翻转到背面,显示抽奖中奖信息。看似简单的一个操作过程,却包含着WEB技术的很多知识面,所以本文的读者应该熟...2015-10-21
  • SQLMAP结合Meterpreter实现注入渗透返回shell

    sqlmap 是一个自动SQL 射入工具。它是可胜任执行一个广泛的数据库管理系统后端指印, 检索遥远的DBMS 数据库等,下面我们来看一个学习例子。 自己搭建一个PHP+MYSQ...2016-11-25
  • IE6-IE9中tbody的innerHTML不能赋值的解决方法

    IE6-IE9中tbody的innerHTML不能赋值,重现代码如下 复制代码 代码如下: <!DOCTYPE html> <html> <head> <meta charset="utf-8"/> <title>IE6-IE9中tbody的innerHTML不能复制bug</title> </head> <body style="height:3...2014-06-07
  • PHP实现今天是星期几的几种写法

    复制代码 代码如下: // 第一种写法 $da = date("w"); if( $da == "1" ){ echo "今天是星期一"; }else if( $da == "2" ){ echo "今天是星期二"; }else if( $da == "3" ){ echo "今天是星期三"; }else if( $da == "4"...2013-10-04
  • 原生js实现fadein 和 fadeout淡入淡出效果

    js里面设置DOM节点透明度的函数属性:filter= "alpha(opacity=" + value+ ")"(兼容ie)和opacity=value/100(兼容FF和GG)。 先来看看设置透明度的兼容性代码: 复制代码 代码如下: function setOpacity(ele, opacity) { if (...2014-06-07
  • PS中像素大小、文档大小的区别

    在PS中像素大小、文档大小有什么区别呢,这个估计很多初学者不清楚,下面我来给大家讲解一下,希望对你有帮助。 1、像素大小 通常用于显示屏显示的图片大小的调整。菜...2016-09-14
  • Angular.js中下拉框实现渲染html的方法

    这篇文章主要给大家介绍了关于在Angular.js中下拉框实现渲染html的方法,文中通过示例代码介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来跟着小编一起来学习学习吧。...2017-06-24
  • XML、HTML、CSS与JS的区别整理

    在BS中,xml,html,css和js我们都学过,起初分不清这四者的区别和联系,随着知识的增长,有了一些体会,下面通过本文给大家简单介绍 XML、HTML、CSS与JS的区别,需要的朋友参考下...2016-02-21
  • angularjs中ng-bind-html的用法总结

    这篇文章主要介绍了angularjs中ng-bind-html的用法总结,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2017-05-27
  • Android中用HttpClient实现Http请求通信

    本文我们需要解决的问题是如何实现Http请求来实现通信,解决Android 2.3 版本以后无法使用Http请求问题,下面请看正文。 Android开发中使用HttpClient来开发Http程序...2016-09-20
  • JS实现pasteHTML兼容ie,firefox,chrome的方法

    这篇文章主要介绍了JS实现pasteHTML兼容ie,firefox,chrome的方法,涉及javascript针对页面元素的动态操作技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2016-06-24
  • mysql存储过程实现split示例

    复制代码 代码如下:call PROCEDURE_split('分享,代码,片段',',');select * from splittable;复制代码 代码如下:drop PROCEDURE if exists procedure_split;CREATE PROCEDURE `procedure_split`( inputstring varc...2014-05-31
  • PHP正则表达式过滤html标签属性(DEMO)

    这篇文章主要介绍了PHP正则表达式过滤html标签属性的相关内容,实用性非常,感兴趣的朋友参考下吧...2016-05-06
  • C#使用正则表达式过滤html标签

    最近在开发一个项目,其中有需求要求我们把一段html转换为一般文本返回,使用正则表达式是明智的选择,下面小编给介绍下C#使用正则表达式过滤html标签,需要的朋友参考下...2020-06-25
  • C#生成Word文档代码示例

    这篇文章主要介绍了C#生成Word文档代码示例,本文直接给出代码实例,需要的朋友可以参考下...2020-06-25