从 ckeditor 中删除 img 的包装 p

8

我希望能够在ckeditor中取消默认包裹img标签的p标签。

我不想完全禁用p标签或更改EnterMode为其他标签。我只想停止图片被包裹在段落中。

我希望这可以在客户端完成,而不是在服务器端。

我已经有:

<p>Some text in a parapgraph.</p>

<p><img src="picture.jpg"></p>

<p>Another paragraph</p>

我希望:

<p>Some text in a parapgraph.</p>

<img src="picture.jpg">

<p>Another paragraph</p>

5
给那些点踩的人——请至少说一下你为什么要点踩。在我看来,这是一个非常合理的问题。如果你解释一下为什么不是合理的话,那么提问者和其他读者可能都会从中学到一些东西。我点赞以抵消踩的影响。 - Nick Rice
2个回答

0

快速解决方案:

如果该行除了这三个标签之外没有其他内容,那么这将起作用。

$str = "<p><img src=\"/file.jpg\" width=\"1\" height=\"2\" /></p>"
$replaced = preg_replace ( "/<p[^>]*?>(<img[^>]+>)<\/p>/" , "$1" , $str )

更新:

这是一个 PHP 函数。您可以从 JavaScript 中调用它。

function filter_ptags_on_images($content){
   return preg_replace('/<p>\s*(<a .*>)?\s*(<img .* \/>)\s*(<\/a>)?\s*<\/p>/iU', '\1\2\3', $content);
}

add_filter('the_content', 'filter_ptags_on_images');

参考资料


更新完毕。祝你好运。 - ummahusla

0

jQuery解决方案,用于在显示时取消img标签的包装(但它不会阻止段落被放入其中)。

<script>
    $("p img").unwrap();
</script>

它还会展开页面上的任何其他图像,因此您可能需要更紧密的选择器。


谢谢,我会尝试一下。 - Ric

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接