【发布时间】:2012-03-06 19:10:07
【问题描述】:
我为我的客户编写了一个基于 Web 的自定义 WYSIWYG HTML 编辑器。它允许他们格式化基本的 HTML 文本并插入图像。当他们插入图像时,我用##image1## 之类的模式插入它们。生成的 HTML 可以是这样的:
<p>some text and some more text</p>
<p>some text and some <b>bold text</b></p>
<div>##image1##</div>
<p>more text can follow here</p>
<div>##image2##</div>
当输出这个 HTML 时,我正在搜索它并替换图像的出现,并将 ##image1##、##image2## 等替换为实际显示图像的 HTML 标记。我的替换代码在这里:
// first find all occurrences of image string
preg_match_all('|##(.+)##|', $inputHTML, $matches);
for every match in $inputHTML
$output = preg_replace('|##(.+)##|', $imageHTML, $inputHTML, 1 );
这在大多数情况下都会起作用,但在输入的某些变体中,HTML 会解析奇怪的结果。产生奇怪结果的 HTML 之一是:
<div>##image1##</div><p class="align-justify"><strong>Peter Dekleva</strong>, <strong>Damir Lisica</strong>, <strong>Anej Kočevar</strong> in <strong>Gregor Jakac</strong> so glasbeniki, ki v svoji glasbi združujejo silovite instrumentalne vložke, markantne melodije in močna besedila.</p><div>##image2##</div><p class="align-justify">Video dvojček skladbe Brez strahu torej prikazuje oblico sproščenih trenutkov iz zaodrja, veličasnih posnetkov s koncertnega dogajanja, priprav na nastope, nepredvidljive zaključke noči.</p>
如果我编辑该 HTML 并在 <div>##image2##</div> 之前添加一个换行符,那么它将解析它。知道这里发生了什么以及为什么我有问题吗?
我也愿意接受有关更好方法的建议。在我的所见即所得编辑器中插入图像时,我可以插入其他内容而不是 ##image1##...谢谢
【问题讨论】:
-
为什么不直接插入图片 HTML?
-
这不是和your other question一样的问题吗?
-
因为洞应用程序的性质......很难解释,但这就是为什么不这样做的原因!
-
@DamienPirsy 在上一个问题中我询问了如何找到匹配项并且答案是正确的。从那以后,该解决方案不断发展,我决定问新的 Quesiton