2011-01-31 8 views
0

私のウェブサイトへのリクエストごとに呼び出されるHTTPModuleを作成しました。モジュールの中で、クライアントに返送される直前にマークアップを操作できるHTTPApplication.Context.Response.Filter用の独自のフィルタラッパーを作成しました。HTTPmodule - マークアップの置換

ここでのアイデアは、特定の単語/フレーズを検索し、それらをデータベースに格納される特定の言語の同じ単語/フレーズに置き換えることです。

私が置き換えようとしている言葉の一つは「パスワード」です。問題は、_ctl122_txtPasswordと呼ばれるマークアップにコントロールがあることです。私がフィルタに入っているとき、文字通り文字列操作(検索/置換/ 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の性質上、すべての場合を扱う正規表現を作成するのは難しいです。

あなたはより良い解決策は、私が行っていた場合はHTMLの構文解析ツール(HTML敏捷性パック)

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

を使用することであってもよい

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

出発点としてこれを使用することができますこれを行うには(多言語サイトのように聞こえる)、おそらくリソースファイル

マクロ境界を定義しているので、正規表現が簡単に物事を探すことができます。 @@さん

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

おかげで、djeegと

例えば....私は通常、リソースファイルを使用しますが、我々はできない理由があります。私はトークンのアイデアが好きで、私はいくつかの非常に原始的なパターンマッチングと一緒に使うつもりだと思う。 – bullroa