使用PHPWord查找和替换文本

时间:2013-11-25 20:48:18

标签: phpword

是否可以使用PHPWord对Word文档中的文本进行简单的查找和替换?从我所看到的,你可以得到的最接近的只是将文字添加到一个部分,你不能操纵现有的文字,除了字体等。如果不是,有什么免费的,我可以用来这样做?

3 个答案:

答案 0 :(得分:5)

您可以使用setValue来实现您的目标。 看看样品。

这是方法: https://github.com/PHPOffice/PHPWord/blob/e35838f7d7928b2308df3f7f0ef6d49bf96f453c/src/PhpWord/Template.php#L131

答案 1 :(得分:3)

不,PHPWord只打算创建docx文件。

无论如何,docx文件只是zip容器中xml文件的集合。 一般来说,您需要做的是:

  1. 将xxx.docx重命名为xxx.zip
  2. 解压缩到临时文件夹
  3. 在document.xml中的temporary_folder / word中读取,其中包含文档的所有文本(页眉和页脚除外)
  4. 替换您需要更换的内容
  5. 保存document.xml
  6. 将整个临时文件夹压缩回xxx.docx
  7. 请注意Word倾向于在多个部分中拆分单词,具体取决于在保存点对文档执行的操作。任何单词的中间都可能有书签,语言变化,拼写检查或字符格式标记。

    祝你找到一个安全的方法来解决这个问题。

答案 2 :(得分:3)

安装

composer require phpoffice/phpword

PHP代码

include 'vendor/autoload.php';
$templateProcessor = new \PhpOffice\PhpWord\TemplateProcessor('test2.docx');
$templateProcessor->setValue('name', 'myvar');
$templateProcessor->saveAs('./xx.docx');

我的test.docx只有一个单词:${name}