2011-01-31 108 views
0

我已經創建了一個HTTPModule,用於對我的網站發出的每個請求。在模塊內部,我爲HTTPApplication.Context.Response.Filter創建了自己的過濾器封裝,它允許我在將標記發送回客戶端之前對它進行操作。HTTPmodule - 替換標記

這裏的想法是,我要搜索某些單詞/短語,並用給定語言中的相同單詞/短語替換它們,並將其存儲在數據庫中。

我試圖替換的一個詞是「密碼」。問題是標記中有控件叫做_ctl122_txtPassword,當我在我的過濾器中時,我實際上只是在執行字符串操作(search/replace/etc),所以控件名稱被重命名爲_ctl122_txtTranslation,它打破了各種各樣的事情。

所以我不想在這個替換匹配: <input type="password" style="width: 200px;" class="formfield" id="_ctl22_txtPassword" name="_ctl22:txtPassword">

但我確實想在這個替換匹配: <td align="right" class="formlabel">Password:</td>

我已經嘗試了一些正則表達式的解決方案,但我從一個正則表達式很遠忍者,所以這可能是要走的路,但我只是不太瞭解他們。

我試過的唯一的另一種選擇實際上是替換字符串'>密碼'。

在此先感謝您的幫助。

回答

0

由於HTML的本質,編寫一個能夠處理每種情況的正則表達式很難。

你可以以此爲起點

http://snook.ca/archives/active_server_pages/vbscript_code_t

一個更好的解決辦法可能是使用HTML解析工具(HTML敏捷性包)

http://social.msdn.microsoft.com/Forums/en/regexp/thread/3b0a595b-cd09-446f-bbcb-d826511c364e

如果我去要做到這一點(聽起來像一個多語言網站),我可能會使用資源文件

或者可能已經定義了宏的邊界,以便我的正則表達式可以輕鬆地查找事物。

例如使用的@@

<td align="right" class="formlabel">@@[email protected]@:</td> 
+0

謝謝,djeeg ....我通常會使用的資源文件,但也有原因,我們不能。我喜歡令牌想法,我想我會和一些非常原始的模式匹配一​​起使用。 – bullroa 2011-02-01 03:30:46