使用 PHPWord 查找和替换文本

问题描述 投票:0回答:3

是否可以使用 PHPWord 对 Word 文档上的文本进行简单的查找和替换?据我所知,您能得到的最接近的结果只是将文本添加到一个部分,并且您无法操作除字体等之外的现有文本。如果没有,是否有任何免费的东西可以用来执行此操作?

phpword
3个回答
13
投票

安装

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}


7
投票

不,PHPWord 仅用于创建 docx 文件。

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

  1. 将 xxx.docx 重命名为 xxx.zip
  2. 解压到临时文件夹
  3. 在临时文件夹/word中读取document.xml,其中包含文档的所有文本(页眉和页脚除外)
  4. 更换需要更换的东西
  5. 保存文档.xml
  6. 将整个临时文件夹压缩回 xxx.docx

请注意,Word 倾向于将单词拆分为多个部分,具体取决于保存点对文档所做的操作。任何单词中间可能有书签、语言更改、拼写检查或字符格式标签。

祝你好运,找到一种安全的方法来处理这个问题。


7
投票

您可以使用 setValue 来实现您想要的。 看看样品。

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

© www.soinside.com 2019 - 2024. All rights reserved.