如何在SQL语句中清除HTML标签?

有谁写过这样的函数呢,还请赐教!
/*******************/
在数据库里,通过自定义的函数过滤掉含有HTML标签的记录,不知现在是否理解了,呵呵

To:wenpi51
请问这个正则表达式函数该怎么写?这就是问题所在啊

这个函数要求在MS-SQL数据库里用SQL语句来写,提供给存储过程调用的。
最新回答
把酒临风

2024-04-11 06:08:17

<%
db="data.mdb"
set conn=server.createobject("Adodb.Connection")
connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.MapPath(db)
conn.open connstr
set rs=server.createobject("adodb.recordset")
sql="select * from 表"
rs.open sql,conn,1,3
do while rs.eof=false
rs("字段一")=Html2Ubb(rs("字段一")) '在这里使用Html2Ubb函数将字段的数据转换成纯文本形式后写入数据库
rs("字段二")=Html2Ubb(rs("字段二"))
rs("字段三")=Html2Ubb(rs("字段二"))
rs.update
rs.movenext
loop
rs.close
set rs=nothing
conn.close
set conn=nothing

Public Function Html2Ubb(ByVal strContent)
On Error Resume Next
If Len(strContent) > 0 Then
Dim re
Set re = New RegExp

re.IgnoreCase = True
re.Global = True
'--清除script脚本
If CInt(ArrayCodes(0)) = 1 Then
re.Pattern = "(<s+cript(.+?)<\/s+cript>)"
strContent = re.Replace(strContent, "")
End If
'--清除所有iframe框架
If CInt(ArrayCodes(1)) = 1 Then
re.Pattern = "(<iframe(.+?)<\/iframe>)"
strContent = re.Replace(strContent, "")
End If
'--清除所有object对象
If CInt(ArrayCodes(2)) = 1 Then
re.Pattern = "(<object(.+?)<\/object>)"
strContent = re.Replace(strContent, "")
End If
'--清除所有java applet
If CInt(ArrayCodes(3)) = 1 Then
re.Pattern = "(<applet(.+?)<\/applet>)"
strContent = re.Replace(strContent, "")
End If
'--清除所有div标签
If CInt(ArrayCodes(4)) = 1 Then
re.Pattern = "(<DIV>)|(<DIV(.+?)>)"
strContent = re.Replace(strContent, "")
re.Pattern = "(<\/DIV>)"
strContent = re.Replace(strContent, "")
End If
'--清除所有font标签
If CInt(ArrayCodes(5)) = 1 Then
re.Pattern = "(<FONT>)|(<FONT(.+?)>)"
strContent = re.Replace(strContent, "")
re.Pattern = "(<\/FONT>)"
strContent = re.Replace(strContent, "")
End If
'--清除所有span标签
If CInt(ArrayCodes(6)) = 1 Then
re.Pattern = "(<SPAN>)|(<SPAN(.+?)>)"
strContent = re.Replace(strContent, "")
re.Pattern = "(<\/SPAN>)"
strContent = re.Replace(strContent, "")
End If
'--清除所有A标签
' If CInt(ArrayCodes(7)) = 1 Then
re.Pattern = "(<A>)|(<A(.+?)>)"
strContent = re.Replace(strContent, "")
re.Pattern = "(<\/A>)"
strContent = re.Replace(strContent, "")
' End If
'--清除所有img标签
If CInt(ArrayCodes(8)) = 1 Then
re.Pattern = "(<IMG(.+?)>)"
strContent = re.Replace(strContent, "")
End If
'--清除所有FORM标签
If CInt(ArrayCodes(9)) = 1 Then
re.Pattern = "(<FORM>)|(<FORM(.+?)>)"
strContent = re.Replace(strContent, "")
re.Pattern = "(<\/FORM>)"
strContent = re.Replace(strContent, "")
End If
'--清除所有HTML标签
If CInt(ArrayCodes(10)) = 1 Then
re.Pattern = "<(.[^>]*)>"
strContent = re.Replace(strContent, "")
End If
re.Pattern = "(" & Chr(8) & "|" & Chr(9) & "|" & Chr(10) & "|" & Chr(13) & ")"
strContent = re.Replace(strContent, vbNullString)
re.Pattern = "(<!--(.+?)-->)"
strContent = re.Replace(strContent, vbNullString)
re.Pattern = "(<TBODY>)"
strContent = re.Replace(strContent, "")
re.Pattern = "(<\/TBODY>)"
strContent = re.Replace(strContent, "")
re.Pattern = "(<" & Chr(37) & ")"
strContent = re.Replace(strContent, "<%")
re.Pattern = "(" & Chr(37) & ">)"
strContent = re.Replace(strContent, "%>")
Set re = Nothing
Html2Ubb = strContent
Else
Html2Ubb = ""
End If
Exit Function
End Function
%>
珍藏版╮宝贝

2024-04-11 08:00:54

<%
Function RemoveHTML_A(strText)
Dim nPos1
Dim nPos2
nPos1 = InStr(strText, "<")
Do While nPos1>0
nPos2 = InStr(nPos1+1, strText, ">")
If nPos2>0 Then
strText = Left(strText, nPos1 - 1) & Mid(strText, nPos2 + 1)
Else
Exit Do
End If
nPos1 = InStr(strText, "<")
Loop
RemoveHTML_A = strText
End Function
%>

把content字段当参数调用函数就行了。
ex: respinse.write(RemoveHTML_A(content))
我不勇敢

2024-04-11 01:40:07

写一个function,在函数里面处理
具体function的写法不同的数据库不一样,你参考一下你现在使用的数据库手册
八月的雨季

2024-04-11 09:15:57

给你提示,在sql中使用正则表达式函数,在此函数中判断包含html语句的记录,就可以了,绝对正确
灼热感

2024-04-11 02:32:09

好像一般不是这样处理的,SQL语句(T—SQL)能用正则表达式吗??
我觉得你可能想歪了哦!
囧囧

2024-04-11 11:37:28

不知所问啊。
你到底想问什么?你是说把SQL查出来的数据里的HTML标签去掉还是怎么回事?