【发布时间】:2014-04-03 00:28:55
【问题描述】:
我正在为我的客户编写一个应用程序,它使用 WYSIWYG 允许员工修改带有某些变量的信函模板,这些变量被解析为写信给客户的信息。
WYSIWYG 生成 HTML,我将其保存到 SQL 服务器数据库中。然后,我使用 PHP 类生成带有模板文本的 PDF 文档。
这是我的问题。 PDF 生成类可以翻译 b,u,i HTML 标签。而已。这基本上没问题,除了我也需要翻译块引用。我认为最好的解决方案是编写一个正则表达式语句,获取每个 blockquote HTML 块的内容,并用五个空格替换块中的每一行。诀窍是一些块引用可能包含嵌套块引用(双缩进,等等)
但不幸的是,我对正则表达式一向不太熟悉,在过去的 1.5 小时里我尝试了不同的模式,但没有任何效果。
这里有一些问题:
- 字符串可能包含也可能不包含块引用块
- 字符串可以包含多个块引用
- 字符串可能包含任何级别的块引用块嵌套
- 我们可以依赖 HTML 格式正确
一个示例输入字符串看起来像这样:
Dear Charlie,<br><br>We are contacting you because blah blah blah blah.<br><br><br>To login, please use this information:<blockquote>Username: someUsername<br>Password: somePassword</blockquote><br><br>Thank you.
为了简单的解决方案,我需要将每个块引号内的每个 HTML 中断替换为 5 个空格,然后是 \n 换行符。
【问题讨论】:
-
在解决 RegEx 问题时,修改 PDF 创建器似乎比 mickey-mouse 更实用。这是您正在使用的闭源库,还是可以修改的?
-
@Brad It's this class -> ros.co.nz/pdf
-
你确实实现了“blockquote indent”!==“intent 5 spaces at the beginning of the line”对吧?
-
虽然我意识到它不像“5 个空格”那么简单,但这可能是在 PDF 文档中模拟块引用的最简单方法,因为它会打印出每个空格(与 HTML 处理空格的方式不同)。我将用来模拟效果的空格数量可能会被调整或最终变成使用 \t 字符。我仍处于试验阶段,只需要让它“工作”