我正在尝试用HTML代码清理字符串。字符串可以包含多个HTML标记。我想清理字符串中的所有元素,* 除了 * <br>和<font>标签。通过清理,我想用它们的实体替换它们,这样标签就不会加载。我试过使用提供的其他代码,但它似乎不起作用,我不知道如何修改它不消毒两个元素。例如,当我有一个包含HTML元素的字符串时,我想删除除了和之外的所有标记。
<br>
<font>
raogr8fs1#
做一些类似的事情,使用正则表达式来查找和替换标签,并使用一个函数作为第二个要替换的参数,在这个函数中,你可以检查你正在处理的标签-然后如果它不是一个br或font标签,用''替换'<'<,用' '替换'>>'(看起来像'<'和'>',但是无害的)。
const sanitize = html => html.replace(/<[^>]*>/g, found => found.indexOf('<br') === 0 || found.indexOf('<font') === 0 ? found : found.replace(/</g, '<').replace(/>/g, '>')); // test sanitize('<script></script>hello<br><b>test</b><font...>');
顺便说一句,HTML5中不推荐使用font标签...多年来我第一次听到有人提起它...你可能会问,为什么我使用'g'标志-替换所有的事件< and >?这是为了防止有人鬼鬼祟祟地写了一个< inside another <。
1条答案
按热度按时间raogr8fs1#
做一些类似的事情,使用正则表达式来查找和替换标签,并使用一个函数作为第二个要替换的参数,在这个函数中,你可以检查你正在处理的标签-然后如果它不是一个br或font标签,用''替换'<'<,用' '替换'>>'(看起来像'<'和'>',但是无害的)。
顺便说一句,HTML5中不推荐使用font标签...多年来我第一次听到有人提起它...
你可能会问,为什么我使用'g'标志-替换所有的事件< and >?这是为了防止有人鬼鬼祟祟地写了一个< inside another <。