使用 PHPWord 替换 Word 文档中 link 中的占位符

Replacing placeholders in a link in Word document using PHPWord

我一直在使用 PHPWord 使用 setValue 从 PHP 中替换 word 文档中的文本,效果很好。但是 PHPWord 不会替换链接文本 URL 中的占位符。有没有办法做到这一点?

我进行了大量搜索以找到解决此问题的方法,但没有得到任何解决方案。如果有人知道如何使用其他包(而不是 PHPWord)执行此操作,我也准备更改为该包。

在获得两票关闭该主题后添加:如果您不知道我在说什么,请不要投票关闭该主题。这里有一个关于PHPWord的具体问题,PHPWord的用户会很清楚。我也没有要求其他人为我找到一个新包裹。可能有用户是如何受困于 PHPWord 的这一限制,并找到了一个替代包来克服这一限制,我在谷歌搜索后找不到。

我最终创建了一个自定义解决方案以使用 Ziparchive class 打开 PHP 中的 .zip 文件并在以下位置进行搜索替换:

document.xml - 文档内容在这个文件中 footerX.xml、headerX.xml - X 是从 1 到 N 的数字。因此,如果您的文档中只有一个 header,有 5 或 10 或 100 页,则您的 header 内容将在 header1.xml;如果您的文档中有 2 header,那么您将在 header1.xml 和 header2.xml 中拥有这 2 header 内容,依此类推。

rels/document.xml.rels - 文档中的链接要么内联存储在 document.xml 中,要么存储在此 document.xml.rels 文件中。

rels/footerX.xml.rels, rels/headerX.xml.rels - header 中的链接和页脚存储在这些文件中。

更改链接的示例:

$zip = new \ZipArchive();
if ($zip->open($docFile) === TRUE) {
    $content = $zip->getFromName('word/_rels/document.xml.rels');
    $content = str_replace('google.com', 'whosebug.com', $content);
    $zip->addFromString('word/_rels/document.xml.rels', $content);
    $zip->close();
}