用ASP實現論壇的UBB功能(二)

來源:互聯網
上載者:User
大家應當注意到了,我們所要用的函數Instr的小秘密就是它的最後一個可選擇參數Compare,因為我們的UBB代碼需要大小寫不敏感的,預設的情況下,函數Instr是要進行二進位匹配的,也就是說是對大小寫敏感的,所以記住了,這個
Compare參數的值應當設定成為1才可以滿足我們的要求。
  Replace 函數
  返回字串,其中指定數目的某子字串被替換為另一個子字串。
  Replace(expression, find, replacewith[, compare[, count[, start]]])
  參數
  expression
  必選項。字串運算式 包含要替代的子字串。
  Find
  必選項。被搜尋的子字串。
  Replacewith
  必選項。用於替換的子字串。
  Start
  可選項。expression 中開始搜尋子字串的位置。如果省略,預設值為 1。在和count 關聯時必須用
  count
  可選項。執行子字串替換的數目。如果省略,預設值為 -1,表示進行所有可能的替換。在和 start 關聯時必須
用。
  Compare
  可選項。指示在計運算元字串時使用的比較類型的數值。有關數值,請參閱"設定"部分。如果省略,預設值為 0 ,這意味著必須進行二進位比較。
  設定
  compare 參數可以有以下值:
  常數
  值
  描述
  vbBinaryCompare
  0
  執行二進位比較。
  vbTextCompare
  1
  執行文本比較。
  傳回值
  Replace 返回以下值:
  如果
  Replace 返回
  expression 為零長度
  零長度字串 ("")。
  expression 為 Null
  錯誤。
  find 為零長度
  expression 的副本。
  replacewith 為零長度
  expression 的副本,其中刪除了所有由 find 參數指定的內容。
  start > Len(expression)
  零長度字串。
  count 為 0
  expression 的副本。
  這裡我們應當注意的自然也是這個Replace的Compare可選擇參數了,這樣我們在進行UBB代碼全程替換的時候才可以保證對大小寫不敏感。
  其實,實現UBB代碼的程式核心思想都是相同的,實現了其中的一個,其他的也都是迎刃而解的了。下面我們以比較困難並且有代表性的http://www.alixixi.com/program/a/……文法的實現為例來詳細講解如何?他:
  首先,我們可以分析出來,在一段文章當中,要實現這個功能,其實也就是將形式為http://xxx.xxx.xxx的字串找出來,並且加以適當的替換,並且要全程替換,也就是說,你要設法記住你的每一步所在的位置,以便依次進行替換,下面就是實現這個UBB文法的函數代碼:(裡面有詳細注釋)
  Function LinkURLs(strInput)
  Dim iCurrentLocation
  Dim iLinkStart
  Dim iLinkEnd
  Dim strLinkText
  Dim strOutPut
  '初始設定變數
  strLinkText=""
  strOutput=""
  iCurrentLocation=1
  Do while Instr(iCurrentLocation,strInput,"  iLinkStart=Instr(iCurrentLocation,strInput,"[url]",1) '記錄下開始位置
  iLinkEnd=Instr(iCurrentLocation+1,strInput,"" target="_blank">",1)<>0 '尋找UBB文法字串
  iLinkStart=Instr(iCurrentLocation,strInput,"[url]",1) '記錄下開始位置
  iLinkEnd=Instr(iCurrentLocation+1,strInput,"",1) '記錄下結束位置
  If iLinkEnd=0 then iLinkEnd=len(strINput)+1
  select case Mid(strInput,iLinkEnd-1,1)
  case ".","!","?"
  iLinkEnd=iLinkEnd-1 '剔除多餘標點符號
  end select
  stroutput=strOutput & Mid(strInput,iCurrentLocation,iLinkStart-iCurrentLocation)
  strLinkText=replace(Mid(strInput,iLinkStart+5,iLinkEnd-iLinkStart-5),"[/url]","")
  strOutput=strOutput & "" & strLinkText & ""
  iCurrentLocation=iLinkEnd '記錄下當前遊標位置
  Loop
  strOutput=strOutput & Mid(strInput,iCurrentLocation)
  LinkURLs=replace(strOutput,"[/url]","",1,-1,1)
  End Function
  好了,通過上面的這個實現http://www.alixixi.com/program/a/……功能的函數,我們可以以此類推得到實現其他UBB文法的函數,限於篇幅,我就不一一加以祥述了,你可以將這些函數放到一個檔案中,形成一個UBB代碼函數庫,這樣就可以方便的在你的程式當中加以引用了。
  怎麼樣,通過我們自己的努力,現在我們的論壇也可以完全支援UBB代碼功能了,我們的論壇現在也會變得色彩斑斕,圖文並茂了,也必將會吸引到更多的網友,:)
  關於上面文章的實際應用例子,您可以在這裡訪問到: Http://TechTop.Yeah.Net
  (以上所有程式均在Windows9x/NT,IIS/PWS,Access/SQL7上面運行通過)(北京 蘇紅超) 
 

相關文章

聯繫我們

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

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

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.