从ckeditor中的img中删除包装p

时间:2014-11-18 10:40:33

标签: javascript ckeditor rte

我想在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>

2 个答案:

答案 0 :(得分: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');

Reference

答案 1 :(得分:0)

jQuery解决方案,用于在显示时解包img标记。 (虽然它不会阻止寄生。)

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

它还会打开你在页面上的任何其他图像,所以你可能想要一个更紧凑的选择器。