2019/3/26 12:38:44
方法一 : 禁用(yòng)HTML
最簡單的(de)方法是直接禁用(yòng)html标簽而不用(yòng)移除它們. 可(kě)以使用(yòng)Replace()函數. 例如(rú):
strText = Replace(strText, "<script", "<script", 1, -1, 1)
或者直接禁用(yòng)所有(yǒu)的(de)html:
strText = Replace(strText, "<", "<")
這樣做雖然很安全,但(dàn)顯得不夠友(yǒu)好.(用(yòng)戶提交的(de)文(wén)本會(huì)變得難以閱讀(dú))
方法二: 使用(yòng)"<"和(hé)">"
怎樣使得html标簽從文(wén)本中消失呢? 我們可(kě)以去掉"<"和(hé)">"中間的(de)所有(yǒu)内容
在JavaScript中這很簡單:
function RemoveHTML( strText )
{
var regEx = /<[^>]*>/g;
return strText.replace(regEx, "");
}
現在回到(dào)VBScript, 對于Scripting引擎5.0或更高(gāo)版本(可(kě)以通過調用(yòng)ScriptEngineMajorVersion和(hé)ScriptEngineMinorVersion函數來檢驗版本),我們也(yě)可(kě)以使用(yòng)RegExp物(wù)體:
Function RemoveHTML( strText )
Dim RegEx
Set RegEx = New RegExp
RegEx.Pattern = "<[^>]*>"
RegEx.Global = True
RemoveHTML = RegEx.Replace(strText, "")
End Function
若不用(yòng)正則表達式,下面的(de)函數可(kě)以達到(dào)同樣的(de)目的(de):
Function RemoveHTML( 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 = strText
End Function
以上(shàng)的(de)方法雖然都(dōu)可(kě)以去掉括号内的(de)html标簽,但(dàn)是這些方法都(dōu)存在以下問題:
首先,文(wén)本内的(de)任何不表示html的(de)尖括号會(huì)被去除.而且兩個(gè)尖括号中間的(de)文(wén)本也(yě)會(huì)被删掉.換句話(huà)說,在文(wén)本中插入任何"<"或">"都(dōu)會(huì)出現不可(kě)預料的(de)結果.
另外,這種方法不能(néng)控制(zhì)删除哪些html标簽.比如(rú)<b><i>這些無害的(de)标簽通常是允許的(de).
方法三:使用(yòng)IE或其他(tā)工(gōng)具
有(yǒu)很多缺點:
"It may be desirable to parse HTML files inside a Web server process in response to a browser page request. However, the WebBrowser control, DHTML Editing Control, MSHTML, and other Internet Explorer components may not function properly in an Active Server Pages (ASP) page or other application run in a Web server application." (http://support.microsoft.com/support/kb/articles/Q244/0/85.ASP?LN=EN-US&SD=gn&FR=0)
方法四:VBScript
以下的(de)函數可(kě)以限制(zhì)到(dào)具體的(de)html标簽
簡介:
要控制(zhì)被删除的(de)标簽列表,可(kě)以通過向TAGLIST常數中添加/删除标記來實現. 例如(rú),要保留所有(yǒu)的(de)<B>标簽,則從TAGLIST中删除B. 當前的(de)列表包含了MSDN中的(de)所有(yǒu)html标簽以及 LAYER 标簽. 每個(gè)标簽要用(yòng)";"括起來.
開(kāi)始标簽和(hé)結束标簽都(dōu)會(huì)被删除,例如(rú)"<A...>"和(hé)</A...>
若标簽同時在 TAGLIST 和(hé) BLOCKTAGLIST 常數中,則起始标簽和(hé)結束标簽之間的(de)所有(yǒu)内容都(dōu)會(huì)被删除
沒有(yǒu)結束标記的(de)标簽不被視爲html标簽,其内容不會(huì)被删除
塊标簽若沒有(yǒu)結尾标記,從此标簽開(kāi)始到(dào)文(wén)本結束的(de)所有(yǒu)内容會(huì)被
深圳市南山區南山街(jiē)道南海(hǎi)大(dà)道西(xī)桂廟路(lù)北陽光(guāng)華藝大(dà)廈1棟4F、4G-04
咨詢電話(huà):136 8237 6272
大(dà)客戶咨詢:139 0290 5075
業(yè)務QQ:195006118
技術(shù)QQ:179981967