从字符串中删除HTML标记,保持特定

时间:2015-01-05 12:57:59

标签: regex asp-classic

我试图从字符串中删除所有html标记并仅保留特定的(保留标记和属性), 我有这个:

set objRegExp = new RegExp
with objRegExp
.Pattern = "<^((b)|(i)|(em)|(strong)|(br)|(img))>.*</.*>"
.Global = True
end with

并使用:

objRegExp.replace(request.form("content"), "") 

不会改变任何事情。

我需要这个我建立的论坛,它支持WYSIWYG编辑器,我想阻止xss&amp; sql注射。

1 个答案:

答案 0 :(得分:2)

删除所有HTML标记:

Public Function RegexAllHtml(strValue)
   Set RegularExpressionObject = New RegExp
   With RegularExpressionObject
    .Pattern = "<(.|\n)+?>"
    .IgnoreCase = True
    .Global = True
   End With
   Dim strResult: strResult = RegularExpressionObject.Replace(strValue, " ")
   Set RegularExpressionObject = Nothing

   RegexAllHtml = strResult
End Function

要删除特定标签(例如SPAN),您可以使用以下内容: <SPAN[^><]*>|<.SPAN[^><]*>

或保留特定标签(例如b为粗体):<(?!/?(?:strong|b)\b)[^>]*>

BTW:大多数WYSIWG编辑器允许您配置哪些标签不安全,然后在保存内容之前将其删除!例如,参见CKEditor:http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-allowedContent