4

我在我的一个项目中使用 TinyMCE (WYSIWYG) 作为默认编辑器,有时它会自动添加<p>&nbsp;</p> , <p> </p>或 div。

我一直在搜索,但我真的找不到用正则表达式清理任何空标签的好方法。

我尝试使用的代码是,

$pattern = "/<[^\/>]*>([\s]?)*<\/[^>]*>/";
$str = preg_replace($pattern, '', $str); 

注意:我也想清除   :(

4

5 回答 5

6

试试 /<(\w+)>(\s|&nbsp;)*<\/\1>/ 吧。:)

于 2009-05-22T22:21:36.560 回答
1

那个正则表达式有点奇怪——但看起来它可能会起作用。你可以试试这个:

$pattern = ':<[^/>]*>\s*</[^>]*>:';
$str = preg_replace($pattern, '', $str);

不过非常相似。

于 2009-05-22T22:22:09.630 回答
0

尝试这个:

<([\w]+)[^>]*?>(\s|&nbsp;)*<\/\1>
于 2014-02-25T13:21:46.200 回答
0

我知道这不是您直接要求的,但是在使用了几个月的 TinyMCE 之后,不仅要处理这个问题,还要处理用户直接从 Word 发布的问题,我已经切换到FCKeditor并且非常高兴。

编辑:以防万一不清楚,我要说的是 FCKeditor 不会在感觉像的地方插入任意段落,并且可以处理开箱即用的粘贴 Word 废话。您可能会发现我之前的问题会有所帮助。

于 2009-05-22T22:51:39.900 回答
0

您需要多个正则表达式来确保您不会用一个通用的元素消除其他想要的元素。

正如 Ben 所说,您可以使用一个通用正则表达式删除有效元素

<\s*[^>]*>\s*`&nbsp;`\s*<\s*[^>]*>
<\s*p\s*>\s*<\s*/p\s*>
<\s*div\s*>\s*<\s*/div\s*>
于 2009-05-22T23:44:58.170 回答