在PHP中编辑.doc

时间:2012-02-27 18:21:18

标签: php file ms-word edit .doc

我试图通过将文件读入变量$content然后使用str_ireplace()来更改字符串来替换word文档中的字符串。我可以从文件中读取内容但是str_ireplace()似乎无法替换字符串。我认为这是因为字符串是二进制安全的'根据PHP文档。对不起,我是PHP文件操作的初学者,所以这对我来说都是新的。

这就是我写的。

copy('jack.doc' , 'newFile.doc');
$handle = fopen('newFile.doc','rb');
$content = '';

while (!feof($handle))
{
    $content .= fread($handle, 1);
}
fclose($handle);

$handle = fopen('newFile.doc','wb');
$content = str_ireplace('USING_ICT_BOX', 'YOUR ICT CONTENT', $content);
fwrite($handle, $content);
fclose($handle);

当我下载新文件时,它会在MS Word中打开,但它会显示旧字符串而不是应该替换的字符串。

我能解决这个问题吗?有没有更好的工具可以用来替换MS Word thourgh PHP中的字符串?

6 个答案:

答案 0 :(得分:1)

我对使用php编辑 .doc .docx 文件有相同的要求,我找到了解决方法。 我在It :: http://www.onlinecode.org/update-docx-file-using-php/

上写了帖子
copy('jack.doc' , 'newFile.doc');
$full_path =  'newFile.doc';
if($zip_val->open($full_path) == true)
{
    // In the Open XML Wordprocessing format content is stored.
    // In the document.xml file located in the word directory.

    $key_file_name = 'word/document.xml';
    $message = $zip_val->getFromName($key_file_name);               

    $timestamp = date('d-M-Y H:i:s');

    // this data Replace the placeholders with actual values
    $message = str_replace("client_full_name",      "onlinecode org",       $message);
    $message = str_replace("client_email_address",  "ingo@onlinecode.org",  $message);
    $message = str_replace("date_today",            $timestamp,         $message);      
    $message = str_replace("client_website",        "www.onlinecode.org",   $message);      
    $message = str_replace("client_mobile_number",  "+1999999999",          $message);

    //Replace the content with the new content created above.
    $zip_val->addFromString($key_file_name, $message);
    $zip_val->close();
}

答案 1 :(得分:0)

也许这会指向正确的方向:http://davidwalsh.name/read-pdf-doc-file-php

答案 2 :(得分:0)

到目前为止我找到的解决方案(虽未测试):
Docvert - 适用于Doc,免费但不能直接使用 PHPWordLib - 为Doc工作,而不是免费的 PHPDocX - 仅限DocX,需要Zend。

答案 3 :(得分:0)

我将选择PHPWord www.phpword.codeplex.com,因为我相信老师明年将获得Office 2007,我也会尝试找到一些方法来通过PHP转换.docx和.doc之间的支持他们在同一时间。

答案 4 :(得分:0)

如果您可以访问网络服务,请查看Docmosis云服务,因为它可以将doc文件与您的数据邮寄到一起,并返回doc / pdf / other。您可以https发布到服务以发出请求,因此从PHP开始非常简单。

答案 5 :(得分:0)

在linux上处理word文档文件的方法很多

  1. antiword - 转换为纯文本时效果不高。
  2. pyODconvert
  3. open-officeliboffice - 通过UNO
  4. unoconv实用程序 - 需要在服务器上安装权限
  5. 有一个python脚本最适合在线文件转换,但您需要通过命令行转换这些文件。

    仅使用php代码处理word文件没有特定和满意的解决方案。

    我找了很长时间才达成这个建议。