Regex在網路編程中的運用(5)

來源:互聯網
上載者:User
編程|網路|正則   三、UBB正則表達模板執行個體

  下面是我寫的一個UBB函數,這個函數基本上能使你的論壇成為一個優秀的UBB代碼論壇了。當然,通過改進後,你可以得到一個更強大的UBB論壇。

Function ReThestr(face,str)
 dim re,str

 re="\>"
 str=checkexp(re,str,">")

 re="\<"
 str=checkexp(re,str,"<")

 re="\n\r\n/"
 str=checkexp(re,str,"<P>")

 re=chr(32)
 str=checkexp(re,str," ")

 re="\r"
 str=checkexp(re,str," ")

 re="\[img\]((http:(\/\/|\\\\)){1}((\w)+[.]){1,3}_
(net|com|cn|org|cc|tv)(((\/[\~]*|\\[\~]*)
(\w)+)|[.](\w)+)*(\w)+[.]{1}(gif|jpg|png))\[\/img\]" '尋找圖片地址
 str=checkexp(re,str," <img src='$1'> ")

 re="\[w\](http:(\/\/|\\\\)((\w)+[.]){1,}_
(net|com|cn|org|cc|tv)(((\/[\~]*|\\[\~]*)(\w)+)|[.](\w)+)*
(((([?](\w)+){1}[=]*))*((\w)+){1}([\&](\w)+[\=](\w)+)*)*)\[\/w\]" '尋找幀地址
 str=checkexp(re,str,"<iframe width='300' height='300' src='$1'></iframe>")

 re="([^('>)])(<br>)*((http|https|ftp):_
(\/\/|\\\\)((\w)+[.]){1,}(net|com|cn|org|cc|tv|_
([0-9]{1,3}))(((\/[\~]*|\\[\~]*)(\w)+)|[.](\w)+)*_
(((([?](\w)+){1}[=]*))*((\w)+){1}([\&](\w)+[\=](\w)+)*)*)" '尋找連結地址
 str=checkexp(re,str,"$1$2 <a href='$3' target=_blank>$3</a> ")
 re="([^(http://|http:\\)])((www|cn)[.](\w)+[.]{1,}_
(net|com|cn|org|cc)(((\/[\~]*|\\[\~]*)(\w)+)|[.](\w)+)*
(((([?](\w)+){1}[=]*))*((\w)+){1}([\&](\w)+[\=](\w)+)*)*)
" '尋找不以http://開頭的地址
 str=checkexp(re,str,"$1 <a href='http://$2' target=_blank>$2</a> ")
 re="([^(=)])((\w)+[@]{1}((\w)+[.]){1,3}(\w)+)" '尋找郵件地址
 str=checkexp(re,str," <a href='mailto:$2'>$2</a> ")
 re="\[color=(((\w)+)|][#][0-F]{6})\]((.)+)\[\/color\]" '替換字型色彩
 str=checkexp(re,str,"<font color='$1'>$4</font>")
 re="\[size=(][0-9]{1})\]((.)+)\[\/size\]" '替換字型大小
 str=checkexp(re,str,"<font size='$1'>$2</font>")
 re="\[font=((.)+){1,3}\]((.)+)\[\/font\]" '替換字型
 str=checkexp(re,str,"<font face='$1'>$3</font>")
 re="(\[b\])(.+)(\[\/b\])" '加粗字型
 str=checkexp(re,str,"<b>$2</b>")
 re="(\[u\])(.+)(\[\/u\])" '下畫線
 str=checkexp(re,str,"<u>$2</u>")
 re="(\[li\])(.+)(\[\/li\])" '列表
 str=checkexp(re,str,"<li>$2</li>")
 re="(\[QUOTE\])(.+)(\[\/QUOTE\])" '引用
 str=checkexp(re,str,"_
<BLOCKQUOTE>引用:<HR SIZE=1>$2<HR SIZE=1></BLOCKQUOTE>")
 re="\[email=((\w)+][@]{1}((\w)+[.]){1,3}(\w)+)\](.+)(\[\/email\])" '郵件
 str=checkexp(re,str,"<a href=mailto:$1>$6</a>")
 re="(\[center\])(.+)(\[\/center\])" '置中
 str=checkexp(re,str,"<center>$2</center>")

 re="fuck"
 str=checkexp(re,str,"***")

 re="操"
 str=checkexp(re,str,"***")

 re="sex"
 str=checkexp(re,str,"***")

 re="TMD"
 str=checkexp(re,str,"***")

 re="shit"
 str=checkexp(re,str,"***")

 ReThestr=str
end function


  UBB代碼如下:

  • [font=impact] [/font]

      測試代碼如下:


    http://cn.yahoo.com
    http://aol.com http://192.168.0.1
    www.yahoo.com how are you[/b]
    http://page2000.xiloo.com/~page2000?PageNo=2&action=del
    lucaihui@cmmail.com 大家好http:\\page2000.shit
    <font color=red>http://test.com</font>http://test


      全部符合預想結果

      ASPRegex對像函數如下:

      Function CheckExp(patrn,strng,tagstr)
     Dim regEx,Matches

     Set regEx=New RegExp'建立一個新對像
     regEx.Pattern=patrn'設定模板
     regEx.IgnoreCase=true'搜尋是否區分大小寫 true表是不區分 flase表示區分
     regEx.Global=True'搜尋是否應用於整個字串

     Matches=regEx.replace(strng,tagstr)'匹配並替代字串

     CheckExp=Matches'返回函數結果
    end function


      把上面的兩個函數存為一個頁面(如ubbcode.asp),這樣就組成一個完整的UBB函數了。

      在你的論壇上加上這個函數,就成了支援UBB代碼的論壇了。只要在用時調用這個函數就行了。調用形式如

       text=ReThestr(text)

      如果你要進一步測試,可以到http://www.4u2v.com/bbs去測試,因為該論壇就採用了此模板。



    相關文章

    E-Commerce Solutions

    Leverage the same tools powering the Alibaba Ecosystem

    Learn more >

    Apsara Conference 2019

    The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

    Learn more >

    Alibaba Cloud Free Trial

    Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

    Learn more >

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。