我正在使用TinyMCE将内容发布到我的网站。我有一个问题,我只能在另一个元素中插入一个图像,例如段落,即使我把光标放在内容的末尾。
因此,当我发布内容时,我目前最终得到的标记如下:
<p>Text content <img src="blah" /></p><p>Another paragraph</p>
我注意到WordPress和TinyMCE示例网站都以上述方式插入图像。
我无法找到如何在TinyMCE中插入任何其他元素之外的图像的解决方案,因此我的下一步是尝试更改内容服务器端,以便在发布我的内容时,我是能够在将标记保存到我的数据库之前更正标记,这样我最终会得到:
<p>Text content</p><img src="blah" /><p>Another paragraph</p>
是否有任何人知道我需要做些什么才能实现这一目标。我知道正则表达式应该可行,但我不确定是什么或如何使用它来达到这个效果。更好的是,如果有人能解决TinyMCE问题,那就更好了。
我知道显然我可以使用JS来实现这个客户端,但是这个解决方案并不理想。
非常感谢,
d
答案 0 :(得分:2)
不要使用RegEx来操作HTML节点!它不是为它而设计的,而且太脆弱了。
HTML不是Regular语言,即使使用许多现代正则表达式实现支持的非常规功能,尝试使用正则表达式操作HTML仍然是困难的。
对于快速而肮脏的解决方案,您可以执行以下操作:
preg_replace
( "/(<img[^>]++>)\s*+(</p>)/gi"
, "$2$1"
, $HtmlText
);
但将失败与几个有效的HTML结构 - 您实际应该使用的是像PHP Simple HTML DOM Parser那样将HTML文本解析为HTML DOM,操作该DOM,然后作为文本输出试。