我正在构建一个大型 word 文档,并且只需要更改字符串“部分”的文本颜色。
我在这里、这里和这里的几个地方发现了类似的问题,但我的问题似乎有所不同,我只想为字符串的一部分着色,而不是整个段落或整个 OpenTBS 字段,如在这些例子中。
我首先尝试将单个字符串块包装在 docx XML 标记中,但发现 php 然后转换为实体(>
等),这显然没有用。目前,我已经开始通过模板脚本将部分文本包装在 XML 标记中,这给了我一个格式错误的 XML 输出,我想是因为我在</w:r>
from 一个子字符串和<w:r>
下一个子字符串之间有内容。
关于如何正确执行此操作的任何建议?以下是当前代码和输出。
//Function called onmerge. I wrap the portion of string I want to change the text
//colour of with [UNTRANSLATED] and [ENDUNTRANSLATED] manually earlier, and attempt
//to swap them for tags at this point.
function lb($FieldName, &$CurrVal) {
$CurrVal= str_replace('[UNTRANSLATED]', '<w:r><w:rPr><w:color w:val="FF0000"/></w:rPr><w:t>', $CurrVal);
$CurrVal= str_replace('[ENDUNTRANSLATED]', '</w:t></w:r>', $CurrVal);
}
并且输出...
<w:t>
<w:r>
<w:rPr>
<w:color w:val="FF0000" />
</w:rPr>
<w:t>Slaked Lime</w:t>
</w:r>,
<w:r>
<w:rPr>
<w:color w:val="FF0000" />
</w:rPr>
<w:t>Air slaked Lime</w:t>
</w:r>,
[code continues in same style...]
Word 在我的第二个块和第二个<w:r>
标签所在的位置标记错误。不幸的是,这个错误非常难以描述。