nhconch [オリジナル作品]
PHP を使用したことのある友人は、PHP での変数の使用が柔軟で便利であることを知っています。特に文字列内の変数名と値の変換が簡単に実現でき、PHP コード全体がより簡潔で美しくなります。たとえば、データベースを更新する SQL ステートメントは次のように記述するだけで済みます。「update users setpassword='$password', group=$group, name='$username' where account='$account'」, where $password 、$group、$username、および $account は、実際の変数値に置き換えられます。ASP で同じ機能を実現するには、次のように記述する必要があります。 ",name= '" & username & "' where account='" & account & "'" ですが、これは冗長で見苦しくなります。これが挿入言語であり、挿入されたフィールドが多数ある場合、フィールドと値の対応を確認するのは骨の折れる作業になります。
次に、同様の変数名と値の変換を ASP で実装する方法を見てみましょう。
その考え方
は、まず、実際の値に置き換える必要がある変数名を通常のテキストから区別する方法が必要であり、次に、見つかったすべての変数名をそれらが表す実際の値に置き換えるというものです。
最初のポイントは、正規表現を使用して見つけることができます。ここでは、PHP の変数表現を使用しませんが、変数名の境界文字として大きな数字 {} を使用します。文字列表現は、password='{password}',group ={ になります。グループ}。
2 番目のポイントは、変数名と変数値の変換の鍵です。変数値は変数名を通じて取得されます。 ASP の情報を見ると、直接的な実装方法は見つかりませんでしたが、情報の説明から、Execute がコード実行の同期として受信した有効な文字列を実行できることがわかります。 、命令を達成するには小さな関数を書くだけです。コアコードは次のとおりです。
関数 GetVar(var_name)
Execute("関数 get_value(): get_value=" & var_name & ": 関数の終了")
getvar=get_value()
終了関数
実装
の完全なコード:
関数 GetVar(var_name)
Execute("関数 get_value(): get_value=" & var_name & ": 関数の終了")
getvar=get_value()
終了関数
function Txt2Value(str, level)
dim 正規表現、一致、結果
regEx = 新しい RegEx を設定します
ケースレベルを選択してください
case 0 regEx.Pattern = "{(w+)}" '変数名は有効です
case 1 regEx.Pattern = "{([w+-*/\<>=]+)}" '変数名と演算子は有効です
'case 2 regEx.Pattern = "{([ws]+)}" '改行文字を除くすべての文字が有効です
case else 終了関数
エンドセレクト
'regEx.Pattern = "{(w+)}"
regEx.IgnoreCase = true
regEx.Global = true
一致を設定 = regEx.Execute(str)
結果 = 文字列
'response.write Matches.Count
試合中の各試合について
結果 = Replace(結果、Match.Value、GetVar(Match.SubMatches(0)))
次
一致 = なしを設定します
正規表現 = 何も設定しない
Txt2Value = 結果
関数の終了
function Var2Value(var_name)
Var2Value = Txt2Value(var_name, 0)
関数
呼び出しメソッド:
Var2Value("ユーザーの設定を更新します。パスワード='{パスワード}'、グループ={グループ}、名前='{ユーザー名}'、アカウント='{アカウント}'"
Var2Value は Txt2Value を呼び出し、すべての変数名を検索し、GetVar を呼び出して変数値を取得して置き換えます。実際、Txt2Value(str,1) を直接呼び出すと、文字列値に対する四則演算も可能になります。