lang/asp

ASP 정규표현식, 태그삭제, 자동링크

C/H 2006. 10. 20. 01:40
' --------------------------------------------------------
' Function Name : regular_replace
' Description : 정규표현식을 이용한 대치
' -------------------------------------------------------- 
Function eregi_replace(pattern, replace, text)

Dim eregObj

' Create regular expression
Set eregObj= New RegExp

eregObj.Pattern= pattern ' Set Pattern(패턴 설정)
eregObj.IgnoreCase = True ' Set Case Insensitivity(대소문자 구분 여부)
eregObj.Global = True ' Set All Replace(전체 문서에서 검색)

eregi_replace = eregObj.Replace(text, replace) ' Replace String

End Function 

Function delete_tag(atcText)

' Tag를 삭제한다.
atcText= eregi_replace(" atcText= eregi_replace("(.*)","",atcText)
atcText= eregi_replace("<[/]*(div|layer|body|html|head|meta|form|input|select|textarea|base)[^>]
*>","",atcText)
atcText= eregi_replace("<(style|script|title|link)(.*)","",atcText)
atcText= eregi_replace("<[/]*(script|style|title|xmp)>","",atcText)
atcText= eregi_replace("([a-z0-9]*script:)","deny_$1",atcText)
atcText= eregi_replace("<(\?|%)","<$1",atcText)
atcText= eregi_replace("(\?|%)>","$1>",atcText)

' Tag가 제거된 문자열을 리턴한다.
delete_tag = atcText
End Function

' --------------------------------------------------------
' Function Name: auto_link
' Description: 문서 내용에 있는 Url를 찾아내어 자동으로 링크를 구성하는 함수
' -------------------------------------------------------- 
Function auto_link(text)

Dim regex_file, regex_http, regex_mail

regex_file= "gz|tgz|tar|gzip|zip|rar|mpeg|mpg|exe|rpm|dep|rm|ram|asf|ace|viv|avi|mid|gif|jpg|png|bmp|ep
s|mov"
regex_http = "(http|https|ftp|telnet|news):\/\/(([\xA1-\xFEa-z0-9_\-]+\.[][\xA1-\xFEa-z0-
9:;&#@=_~%\?\/\.\,\+\-]+)(\/|[\.]*[a-z0-9]))" 
regex_mail = "([\xA1-\xFEa-z0-9_\.\-]+)@([\xA1-\xFEa-z0-9_\-]+\.[a-z0-9\-\._\-]+[\.]*[\xA1-
\xFEa-z0-9\?=]*)"

' img tag 와 a tag 의 경우 링크가 여러줄에 걸쳐 이루어져 있을 경우
' 이를 한줄로 합침 (합치면서 부가 옵션들은 모두 삭제함)
text = eregi_replace("<(a|img)[^>]*(href|src)[^>]*(" & regex_http & "|mailto:" & regex_mail & ")[^>]*>","<$1 
$2=""$3"">", text)

' 특수문자와 링크시 target 삭제
text = eregi_replace("&(quot|gt|lt)","!$1", text)

' html 사용시 Link 보호
text = eregi_replace("href=""(" & regex_http & ")""[^>]*>","href=""$2_orig://$3"" target=""_blank"">", text)
text = eregi_replace("href=""mailto:(" & regex_mail & ")"">","href=""mailto:$2#-#$3"">", text) 
text = eregi_replace("(background|codebase|src)[ \n]*=[\n""' ]*(" & regex_http & ")[""']
*","$1=""$3_orig://$4""",text)

'링크가 안된 Url및 Email Address 자동 링크
text = eregi_replace("(" & regex_http & ")" ,"$1", text)
text = eregi_replace("(" & regex_mail & ")","$1", text)
' 보호를 위해 치환된것 복구
text = eregi_replace("!(quot|gt|lt)","&$1", text)
text = eregi_replace("(http|https|ftp|telnet|news|mms)_orig","$1", text)
text = eregi_replace("#-#","@",text)
' File Link시 Target을 삭제 
text = eregi_replace("(\.(" & regex_file & ")"") target=""_blank""","$1", text)

auto_link = text
End Function
반응형

'lang > asp' 카테고리의 다른 글

ASP 함수모음  (0) 2006.10.20
ASP, MSSQL 트랙백  (0) 2006.10.20
ASP 기본문법  (0) 2006.10.20
서버에 부담을 줄이려면 고려하라  (0) 2006.10.20
ASP 오류 번호 정리  (0) 2006.10.20