精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>● ASP>>ASP范例>>关于UBB论坛语法的分析--我的程序段!

主题:关于UBB论坛语法的分析--我的程序段!
发信人: iceant()
整理人: qcrsoft(2001-12-13 07:14:42), 站内信件
前面看到有人在论讨UBB语法分析,
因为最近我在做这个东东,所以将我写的几个函数列出来供大家参考!
这也是我对SNIZ-UBB论坛最大的改动,基本更正了它对TAG分析的错误

function ChkUrls(fString, fTestTag, fType)

Dim strArray
Dim Counter
Dim strTempString

strTempString = fString
if Instr(1, fString, fTestTag) > 0 then
strArray = Split(fString, fTestTag, -1)
strTempString = strArray(0)
for counter = 1 to UBound(strArray)
if ((strArray(counter-1) = "" or len(strArray(counter-1)) < 5) and s
trArray(counter)<> "") then
strTempString = strTempString & edit_hrefs("" & fTestTag & strArray
(counter), fType)
elseif ((UCase(right(strArray(counter-1),5)) <> "[URL]") and (UCase(
right(strArray(counter-1),11)) <> "[URL=&QUOT;") and (UCase(right(strA
rray(counter-1),7)) <> "FILE:///") and (UCase(right(strArray(counter-1
),7)) <> "HTTP://") and (UCase(right(strArray(counter-1),8)) <> "HTTPS
://") and (UCase(right(strArray(counter-1),5)) <> "SRC=""") and (UCase(right(s
trArray(counter-1),10)) <> "SRC=&QUOT;") and strArray(counter)<> "") t
hen
strTempString = strTempString & edit_hrefs("" & fTestTag & strArray
(counter), fType)
else
strTempString = strTempString & fTestTag & strArray(counter)
end if
next
end if

ChkUrls = strTempString

end function

function ChkMail(fString, fTestTag, fType)

Dim strArray
Dim Counter
Dim strTempString

strTempString = fString
if Instr(1, fString, fTestTag) > 0 then
strArray = Split(fString, fTestTag, -1)
strTempString = strArray(0)
for counter = 1 to UBound(strArray)
if (Instr(strArray(counter), "@") > 0) and not (Instr(UCase(strArray
(counter)), "[URL") > 0) then 
strTempString = strTempString & edit_hrefs("" & fTestTag & strArray
(counter), fType)
else
strTempString = strTempString & fTestTag & strArray(counter)
end if
next
end if

ChkMail = strTempString

end function

function FormatStr(fString)
on Error resume next
fString = Replace(fString, CHR(13), "")
fString = Replace(fString, CHR(10) & CHR(10), "</P><P>")
fString = Replace(fString, CHR(10), "<BR>")
if strBadWordFilter = 1 then
fString = ChkBadWords(fString)
end if

fString = ChkUrls(fString,"http://", 1)
fString = ChkUrls(fString,"https://", 2)
fString = ChkUrls(fString,"file:///", 3)
fString = ChkUrls(fString,"www.", 4)
fString = ChkUrls(fString,"mailto:",5)
fString = ChkMail(fString," ",5)
fString = ChkMail(fString,chr(13),5)

'fString = edit_hrefs(fString, 5)
fString = ReplaceUrls(fString)
FormatStr = fString
end function

Function ReplaceUrls(fString)
Dim oTag, c1Tag, c2Tag
Dim roTag, rc1Tag, rc2Tag
Dim oTagPos, c1TagPos, c2TagPos
Dim nTagPos
Dim counter2
Dim strArray, strArray2, strArray3

    oTag   = "[url=&quot;"
    oTag3  = "[url="&chr(34)
    oTag2  = "[url]"
    roTag  = "<a href="""
httpTag ="<a href=""http://"
c1Tag = ""]"
c1Tag3 = chr(34)&"]"
c1Tag2 = "[/url]"
rc1Tag = """ target=""_New"">"
    c2Tag  = "[/url]"
    rc2Tag = ""
    oTagPos = InStr(1, fString, oTag, 1)
    c1TagPos = InStr(1, fString, c1Tag, 1)
   
    oTagPos_T = InStr(1, fString, oTag3, 1)
    c1TagPos_T = InStr(1, fString, c1Tag3, 1)
    
strTempString = ""
if ((oTagpos > 0) and (c1TagPos > 0)) or ((oTagPos_T>0)and(c1TagPos_T>
0)) then
if ((oTagpos > 0) and (c1TagPos > 0)) then strArray = split(fString, 
oTag, -1,1)
if ((oTagPos_T>0)and(c1TagPos_T>0)) then strArray = split(fString, oT
ag3, -1,1)
for counter2 = 0 to UBound(strArray)
if (InStr(1, strArray(counter2), c2Tag, 1) > 0) and ((InStr(1, strAr
ray(counter2), c1Tag, 1) > 0)or(InStr(1, strArray(counter2), c1Tag3, 1
) > 0)) then
if  (InStr(1, strArray(counter2), c1Tag, 1) > 0) then 
strArray2 = Split(strArray(counter2), c1Tag, -1)
else 
strArray2 = Split(strArray(counter2), c1Tag3, -1)
end if
' if Instr(1, strArray2(1), c2Tag) and  not( Instr(1, UCase(strArray
2(1)), "[URL]") >0) then
if Instr(1, strArray2(1), c2Tag)>0 then  
strFirstPart = Left(strArray2(1), Instr(1, strArray2(1),c2Tag)-1)

strSecondPart = Right(strArray2(1), (Len(strArray2(1)) - Instr(1, 
strArray2(1), c2Tag) - len(c2Tag)+1))
if strFirstPart <> "" then
strTempString = strTempString & roTag &"mailto:"& strArray2(0) & 
rc1Tag & strFirstPart & rc2Tag & strSecondPart
else
strTempString = strTempString & roTag & strArray2(0) & rc1Tag & s
trArray2(0) & rc2Tag & strSecondPart
end if
else
strTempString = strTempString & roTag & strArray2(0) & rc1Tag & st
rArray2(0) & rc2Tag & strArray2(1)
end if
elseif ((InStr(1, strArray(counter2), c1Tag, 1) > 0)or(InStr(1, strA
rray(counter2), c1Tag3, 1) > 0) ) then
if (pos_t=InStr(1, strArray(counter2), c1Tag, 1) > 0) then 
strArray2 = Split(strArray(counter2), c1Tag, -1)
pos_t=InStr(1, strArray2(1), c1Tag2, 1)
mail_to=left(strArray2(1),pos_t-1)
strArray2(1)=right(strArray2(1),(len(strArray2(1))-pos_t-5))
end if 
if (InStr(1, strArray(counter2), c1Tag3, 1) > 0) then 
strArray2 = Split(strArray(counter2), c1Tag3, -1)
pos_t=InStr(1, strArray2(1), c1Tag2, 1)
mail_to=left(strArray2(1),pos_t-1)
strArray2(1)=right(strArray2(1),(len(strArray2(1))-pos_t-5))
end if

strTempString = strTempString & roTag &"mailto:"& strArray2(0) & rc
1Tag & mail_to & rc2Tag & strArray2(1)
else
strTempString = strTempString & strArray(counter2)
end if
next

else
strTempString = fString
end if
oTagPos2 = InStr(1, strTempString, oTag2, 1)
c1TagPos2 = InStr(1, strTempString, c1Tag2, 1)

if (oTagpos2 > 0) and (c1TagPos2 > 0) then
  strTempString2 = ""
  strArray = Split(strTempString, oTag2, -1)'用[url]分
  for counter3 = 0 to Ubound(strArray)
  if (Instr(1, strArray(counter3), c1Tag2) > 0) then 'c1Tag2="[/url]"

  strArray2 = split(strArray(counter3), c1Tag2, -1)
  strTempString2 = strTempString2 & httpTag & strArray2(0) & rc1Tag 
& strArray2(0) & rc2Tag & strArray2(1)
  else
  strTempString2 = strTempString2 & strArray(counter3)
  end if
  next  
  strTempString = strTempString2
end if

ReplaceUrls = strTempString


End Function
%>
<script language="javascript1.2" runat=server>function edit_hrefs(s_ht
ml, type){    s_str = new String(s_html);

if (type == 1) {      s_str = s_str.replace(/\b(http\:\/\/[\w+\.]+[\w+
\.\:\/\_\?\=\&\-\'\#\%\~\;\,\$\!\+\*]+)/gi,   "<a href=\"$1\" target=
\"_blank\">$1<\/a>"); } 

if (type == 2) { s_str = s_str.replace(/\b(https\:\/\/[\w+\.]+[\w+\.\
:\/\_\?\=\&\-\'\#\%\~\;\,\$\!\+\*]+)/gi,   "<a href=\"$1\" target=\"_blank\">
$1<\/a>"); }

if (type == 3) { s_str = s_str.replace(/\b(file\:\/\/\/\w\:\\[\w+\/\w
+\.\:\/\_\?\=\&\-\'\#\%\~\;\,\$\!\+\*]+)/gi,   "<a href=\"$1\" target
=\"_blank\">$1<\/a>"); }

if (type == 4) { s_str = s_str.replace(/\b(www\.[\w+\.\:\/\_\?\=\&\-\
'\#\%\~\;\,\$\!\+\*]+)/gi,    "<a href=\"http://$1\" target=\"_blank\
">$1"); }

if (type == 5) { s_str = s_str.replace(/\b([\w+\-\'\#\%\.\_\,\$\!\+\*
]+@[\w+\.?\-\'\#\%\~\_\.\;\,\$\!\+\*]*)/gi,    "<a href=\"mailto\:$1\
">$1"); }          

return s_str;}

</script>

--
学习,学习,再学习,
人生如此短暂,
而我又如此无知,
除了学习我还能做什么?

※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 61.141.81.19]

[关闭][返回]