Çeşitli web sitelerinde kullanılan ve gün geçtikçe daha çok yaygınlaşan ASPTear, MSXML2.ServerXMLHTTP, MSXML2. FreeThreadedDOMDocument, Microsoft. XMLHTTP gibi Bileşenler ile farklı sitelerden metinler okutularak, kendi sitenizde yayınlıyorsanız eminim yaşadığınız en büyük problemlerden biride gelen veri içeriğindeki html taglarıdır.
Aşağıdaki fonksiyonumuz sayesinde sitemizi rahatsız eden, belkide tasarımını dağıtan tag'ların filtrelenerek nasıl temizleneceğini öğreneceğiz.
Fonksiyonumuz <> tagları arasında bulunan ve TAGLIST değerini içeren bölümleri komple filtreler, bu filtre sayesinde elimize tamamı temizlenmiş salt veri (metin) ulaşır, aşağıdaki TAGLIST'imize arzu edilirse yeni eklemeler yapabilir yada zaten halı hazırda kullanılan Tag'lara ihtiyaç duyuluyor ise filtrelenmesi engellenebilir.
Örnek Yeni Tag Ekleme : <html> Tag'ını Filtre etmek istiyorsak TAGLIST bölümüne ilavaten "html;" eklememiz yeterli oluyor.
Örnek Tag Filtresini Önlemek : <br> Tag'ını Filtre etmek istemiyorsak TAGLIST bölümünde bulunan "br;" değerini silmeniz yeterli olacaktır.
<%
Function RemoveHTML( strText )
Dim TAGLIST
TAGLIST = ";!--;!DOCTYPE;A;ACRONYM;ADDRESS;APPLET;AREA;B;BASE;" &_
"BGSOUND;BIG;BLOCKQUOTE;BODY;BR;BUTTON;CAPTION;CEN TER;CITE;CODE;" &_
"COL;COLGROUP;COMMENT;DD;DEL;DFN;DIR;DIV;DL;DT;EM; EMBED;FIELDSET;" &_
"FONT;FORM;FRAME;FRAMESET;HEAD;H1;H2;H3;H4;H5;H6;H R;HTML;I;IFRAME;IMG;" &_
"INPUT;INS;ISINDEX;KBD;LABEL;LAYER;LAGEND;LI;LINK; LISTING;MAP;MARQUEE;" &_
"META;NOBR;NOFRAMES;NOSCRIPT;OBJECT;OL;OPTION ;P;PARAM;PLAINTEXT;" &_
"PRE;Q;S;SAMP;SCRIPT;SELECT;SMALL;SPAN;STRIKE;STRO NG;STYLE;SUB;SUP;" &_
"TABLE;TBODY;TD;TEXTAREA;TFOOT;TH;THEAD;TITLE;TR;TT;U;UL;VAR;WBR;XMP;
Const BLOCKTAGLIST = ";APPLET;EMBED;FRAMESET;HEAD;NOFRAMES;” &_
”NOSCRIPT;OBJ ECT;SCRIPT;STYLE;"
Dim nPos1
Dim nPos2
Dim nPos3
Dim strResult
Dim strTagName
Dim bRemove
Dim bSearchForBlock
nPos1 = InStr(strText, "<")
Do While nPos1 > 0
nPos2 = InStr(nPos1 + 1, strText, ">")
If nPos2 > 0 Then
strTagName = Mid(strText, nPos1 + 1, nPos2 - nPos1 - 1)
strTagName = Replace(Replace(strTagName, vbCr, " "), vbLf, " ")
nPos3 = InStr(strTagName, " ")
If nPos3 > 0 Then
strTagName = Left(strTagName, nPos3 - 1)
End If
If Left(strTagName, 1) = "/" Then
strTagName = Mid(strTagName, 2)
bSearchForBlock = False
Else
bSearchForBlock = True
End If
If InStr(1, TAGLIST, ";" & strTagName & ";", vbTextCompare) > 0 Then
bRemove = True
If bSearchForBlock Then
If InStr(1, BLOCKTAGLIST, ";" & strTagName & ";", vbTextCompare) > 0 Then
nPos2 = Len(strText)
nPos3 = InStr(nPos1 + 1, strText, "</" & strTagName, vbTextCompare)
If nPos3 > 0 Then
nPos3 = InStr(nPos3 + 1, strText, ">")
End If
If nPos3 > 0 Then
nPos2 = nPos3
End If
End If
End If
Else
bRemove = False
End If
If bRemove Then
strResult = strResult & Left(strText, nPos1 - 1)
strText = Mid(strText, nPos2 + 1)
Else
strResult = strResult & Left(strText, nPos1)
strText = Mid(strText, nPos1 + 1)
End If
Else
strResult = strResult & strText
strText = ""
End If
nPos1 = InStr(strText, "<")
Loop
strResult = strResult & strText
RemoveHTML = strResult
End Function
%>
Fonksiyonu aşağıdaki örnekler halinde kullanabiliriz.
<%=RemoveHTML(Rs("metin"))%>
<%=RemoveHTML(veri)%>
<%Response.write(RemoveHTML(rs("metin"))%>
Fonksiyonu daha iyi anlayabilmeniz için DW renklerine çevrilmiştir.
Selam ve dua ile..