javascript - 从字符串中删除 BBCode URL 标记

标签 javascript php html regex htmlpurifier

我试图建立一个稳定的系统,允许用户将 BB/Html 代码的任何混合粘贴到输入中,我将根据需要清理和删除数据。

内容是从论坛复制的,问题是它们似乎都使用不同的代码。有些显示多个
,有些使用自闭 br 标签。其他人使用 [URL =] 而其他人只使用 [URL]URL[/URL] 等。

到目前为止,我使用 HTMLpurifier 去除除 img 标签之外的所有内容。

HTMLpurifier 没有(据我所知)删除 BBCode。所以,给定一个像这样的字符串:

[URL=http://awebsite.com]My Link [IMG]imagelink.png[/IMG][/URL]

我怎样才能删除 URL 标签并只保留 IMG 标签。

我想删除所有 URL 标记选项,因此给定的 url 和文本可能会很困难。

到目前为止,我已经通过使用 REGEX 转换 [IMG] 标签等取得了很大进展,但我觉得有太多变体无法对其进行硬编码。

关于更有效/可能的删除 URL 标签的方法有什么建议吗?

最佳答案

选项 1

如果您只想删除诸如 [URL=http://awebsite.com][/URL] 之类的标签,而将内容留在其中,则正则表达式很简单:

搜索:\[/?URL[^\]]*\]

替换:空字符串

在 JavaScript 中

replaced = string.replace(/\[\/?URL[^\]]*\]/g, "");

在 PHP 中

$replaced = preg_replace('%\[/?URL[^\]]*\]%', '', $str);

选项 2:同时删除 MyLink 等内容

在这里,我们将替换 [URL...] 之后不是另一个标签的内容。

搜索:\[URL[^\]]*\][^\[\]]*|\[/URL[^\]]*\]

替换:空字符串

JavaScript:

replaced = string.replace(/\[URL[^\]]*\][^\[\]]*|\[\/URL[^\]]*\]/g, "");

PHP:

$replaced = preg_replace('%\[URL[^\]]*\][^\[\]]*|\[/URL[^\]]*\]%', '', $str);

关于javascript - 从字符串中删除 BBCode URL 标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24261555/

相关文章:

javascript - jQuery 发起的 CSS 转换在重复触发时出现故障

php删除数据库中的值,其他不变

html - <_o3a_p> 在网页上来自哪里?

Javascript 形式 - 根据选择不同的电子邮件

mysql查询中的PHP代码

html - 无法对齐 bootstrap html 代码中的 div

php - 在 JavaScript 弹出窗口中显示图像标题?

javascript - 在 sessionStorage.setitem 中存储值时仅获取最后输入的值

javascript - javascript 和 CSS 中的滚动条问题

php - 将 token 放在 URL 中是否安全以防止 PHP 应用程序中的 CSRF 攻击?