用于清理空的、不必要的 HTML 标签的正则表达式

发布于 2024-07-21 18:55:13 字数 321 浏览 2 评论 0原文

我在我的一个项目中使用 TinyMCE (WYSIWYG) 作为默认编辑器,有时它会自动添加

 

,

或 div。

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

我尝试使用的代码是,

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

注意:我也想清除 :(

I'm using TinyMCE (WYSIWYG) as the default editor in one of my projects and sometimes it automatically adds <p> </p> , <p> </p> or divs.

I have been searching but I couldn't really find a good way of cleaning any empty tags with regex.

The code I've tried to used is,

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

Note: I also want to clear   too :(

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

分开我的手 2024-07-28 18:55:13

尝试
/<(\w+)>(\s| )*<\/\1>/
反而。 :)

Try
/<(\w+)>(\s| )*<\/\1>/
instead. :)

情话难免假 2024-07-28 18:55:13

该正则表达式有点奇怪 - 但看起来它可能有效。 你可以试试这个:

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

不过非常相似。

That regexp is a little odd - but looks like it might work. You could try this instead:

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

Very similar though.

战皆罪 2024-07-28 18:55:13

我知道这不是您直接要求的,但经过几个月的 TinyMCE,不仅要应对这个问题,还要应对用户直接从 Word 发帖所带来的地狱,我已切换到 FCKeditor 并且高兴极了。

编辑:以防万一不清楚,我想说的是,FCKeditor 不会在需要的地方插入任意段落,并且可以立即处理粘贴的 Word 垃圾。 您可能会发现我的上一个问题有帮助。

I know it's not directly what you asked for, but after months of TinyMCE, coping with not only this but the hell that results from users posting directly from Word, I have made the switch to FCKeditor and couldn't be happier.

EDIT: Just in case it's not clear, what I'm saying is that FCKeditor doesn't insert arbitrary paras where it feels like it, plus copes with pasted Word crap out of the box. You may find my previous question to be of help.

你又不是我 2024-07-28 18:55:13

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

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

<\s*[^>]*>\s*` `\s*<\s*[^>]*>
<\s*p\s*>\s*<\s*/p\s*>
<\s*div\s*>\s*<\s*/div\s*>

You would want multiple Regexes to be sure you do not eliminated other wanted elements with one generic one.

As Ben said you may drop valid elements with one generic regex

<\s*[^>]*>\s*` `\s*<\s*[^>]*>
<\s*p\s*>\s*<\s*/p\s*>
<\s*div\s*>\s*<\s*/div\s*>
酷到爆炸 2024-07-28 18:55:13

尝试这个:

<([\w]+)[^>]*?>(\s| )*<\/\1>

Try this:

<([\w]+)[^>]*?>(\s| )*<\/\1>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文