我试图建立一个稳定的系统,允许用户将 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/