【问题标题】:Finding and replacing text with PHPWord使用 PHPWord 查找和替换文本
【发布时间】:2013-12-10 18:20:16
【问题描述】:

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

【问题讨论】:

    标签: phpword


    【解决方案1】:

    安装

    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}

    【解决方案2】:

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

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

    【讨论】:

    • 有没有办法替换链接中的占位符?我一直在尝试这样做,但不适用于 setValue()
    【解决方案3】:

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2013-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-10
      • 1970-01-01
      • 2019-10-23
      • 1970-01-01
      • 2011-08-20
      相关资源
      最近更新 更多