跳转到主内容
新派编程网 - 新潮编程理念,全新技术课堂!

如何在 PHPWord 模板中为替换文本设置加粗与下划线样式

本文介绍使用 PHPWord 的 TemplateProcessor 实现动态文本(如 student-name)的富文本格式化,重点演示通过 setComplexValue() 结合 TextRun 为替换内容添加加粗、下划线等样式,替代已失效的 XML 手动修改方案。 本文介绍使用 php word 的 templateprocessor 实现动态文本(如 `student-name`)的富文本格式化,重点演示通过 `setcomplexvalue()` 结合 `textrun` 为替换内容添加加粗、下划线等样式,替代已失效的 xml 手动修改方案。 在 PHPWord 中,TemplateProcessor::setValue() 仅支持纯文本替换,无法直接应用字体样式(如加粗、下划线、颜色等)。若需对模板占位符(如 {student-name})注入带格式的文本,必须使用 setComplexValue() 方法,并传入一个 PhpOffice\PhpWord\Element\TextRun 实例——这是官方推荐且稳定可靠的现代方案(兼容 PHPWord v1.0+)。 ✅ 正确实现方式:使用 TextRun + setComplexValue 以下代码将 student-name 占位符替换为加粗且单线下划线的「Alex」:
use PhpOffice\PhpWord\TemplateProcessor; use PhpOffice\PhpWord\Element\TextRun; $path = public_path() . "/example/dogovor.docx"; $document = new TemplateProcessor($path); // 创建带样式的 TextRun $word = new TextRun(); $word->addText('Alex', [ 'bold' => true, // 加粗 'underline' => 'single', // 单线下划线(可选值:'none', 'single', 'double', 'words') 'color' => '2E74B5', // 可选:十六进制颜色(如深蓝) 'size' => 24, // 可选:字号(单位为半磅,即 12pt ≈ 24) ]); // 使用 setComplexValue 替换占位符(注意:键名不带花括号) $document->setComplexValue('student-name', $word); $document->saveAs(public_path("documents/test.docx"));
⚠️ 关键注意事项 : 占位符在 Word 模板中应写作 {student-name},但 setComplexValue() 的第一个参数 必须省略花括号 (即 'student-name',而非 '{student-name}'); TextRun 支持链式添加多个文本片段(如混合普通/加粗/红色文字),适用于复杂排版; 切勿手动解析或修改 .docx 内部 XML —— 这极易破坏 ZIP 结构或 OpenXML 格式,导致文档损坏(如原文中 XML 字符串拼接方案); 确保模板文件为 .docx(非 .dotx 或旧版 .doc),且占位符未被意外转换为域代码或锁定内容。 ? 补充技巧:批量设置与样式复用 若需多处应用相同样式,建议封装样式数组: PHP 8.5.5 PHP 8.5.5 是 PHP 8.5 分支的维护更新版本。该版本延续了“小步快跑”的迭代逻辑,通过深度错误修复、底层性能微调以及安全加固,旨在为开发者提供一个更健壮、更高效的运行环境。该版本严格遵守语义化版本规范,不包含破坏性变更。 下载 立即学习 “ PHP免费学习笔记(深入) ”;
$strongStyle = ['bold' => true, 'underline' => 'single', 'color' => 'C00000']; $document->setComplexValue('student-name', (new TextRun())->addText('Alex', $strongStyle)); $document->setComplexValue('teacher-name', (new TextRun())->addText('Dr. Smith', $strongStyle));
✅ 总结 ✅ 推荐:setComplexValue() + TextRun::addText() 是当前最健壮、可维护的富文本模板填充方案; ❌ 避免:直接操作 XML、正则替换 标签或自定义字符串拼接 —— 兼容性差、易出错; ? 提示:PHPWord 官方文档中 TextRun 支持更多高级特性(如超链接、脚注、字符间距),可按需查阅 TextRun API 。 通过上述方法,你不仅能安全实现加粗与下划线,还能无缝扩展字体、颜色、大小等样式,真正发挥 PHPWord 模板引擎的专业能力。

相关文章