nhconch [Originalwerk]
Freunde, die PHP verwendet haben, wissen, dass die Verwendung von Variablen in PHP flexibel und bequem ist, insbesondere die Konvertierung von Variablennamen und -werten in Zeichenfolgen leicht zu realisieren ist, wodurch der gesamte PHP-Code prägnanter und schöner wird. Beispielsweise muss eine SQL-Anweisung zum Aktualisieren der Datenbank nur geschrieben werden: „Benutzer aktualisieren setzen Passwort=‘$Passwort‘, Gruppe=$Gruppe, Name=‘$Benutzername‘, wobei Konto=‘$Konto‘“, wobei $Passwort gilt , $group, $username und $account werden durch die tatsächlichen Variablenwerte ersetzt. Um die gleiche Funktion in ASP zu erreichen, müssen Sie schreiben: „updateusers setpassword=‘“ &passwort & „‘,group=" &group &. ",name= '" & Benutzername & "' where account='" & account & "'", was ausführlich und hässlich aussieht. Wenn es sich um eine Einfügesprache handelt und viele eingefügte Felder vorhanden sind, ist die Überprüfung der Übereinstimmung zwischen Feldern und Werten ein mühsamer Prozess.
Sehen wir uns nun an, wie man eine ähnliche Name-Wert-Transformation einer Variablen in ASP implementiert.
Die Idee
ist, dass es zunächst eine Möglichkeit geben muss, die Variablennamen, die durch tatsächliche Werte ersetzt werden müssen, vom gewöhnlichen Text zu unterscheiden. Anschließend müssen alle gefundenen Variablennamen durch die tatsächlichen Werte ersetzt werden, die sie darstellen.
Der erste Punkt kann durch reguläre Ausdrücke gefunden werden. Hier verwenden wir nicht die Variablendarstellung von PHP, sondern die große Zahl {} als Grenzzeichen des Variablennamens. Die Zeichenfolgendarstellung wird zu passwort='{passwort}',gruppe ={. Gruppe}.
Der zweite Punkt ist der Schlüssel zur Variablennamen-Wert-Konvertierung. Der Variablenwert wird über den Variablennamen erhalten. Beim Betrachten der ASP-Informationen haben wir keine direkte Implementierungsmethode gefunden, aber es gibt eine Funktion Execute, die unsere Aufmerksamkeit erregt hat. Aus der Informationsbeschreibung wissen wir, dass Execute die eingehende gültige Zeichenfolge als Codeausführungssynchronisierung ausführen kann , wir müssen nur eine kleine Funktion schreiben, um unsere Zielanweisungen zu erreichen. Der Kerncode lautet:
Funktion GetVar(var_name)
Execute("function get_value(): get_value=" & var_name & ": end function")
getvar=get_value()
die
Endfunktionsimplementierung
:
Funktion GetVar(var_name)
Execute("function get_value(): get_value=" & var_name & ": end function")
getvar=get_value()
Endfunktion
Funktion Txt2Value(str, level)
dim regEx, Übereinstimmungen, Ergebnis
Setze regEx = neues RegExp
Fallebene auswählen
case 0 regEx.Pattern = "{(w+)}" 'Der Variablenname ist gültig
Fall 1 regEx.Pattern = "{([w+-*/\<>=]+)}" 'Variablennamen und Operatoren sind gültig
'case 2 regEx.Pattern = "{([ws]+)}" 'Alle Zeichen außer Zeilenumbrüchen sind gültig
case else Exit-Funktion
Ende auswählen
'regEx.Pattern = "{(w+)}"
regEx.IgnoreCase = true
regEx.Global = true
Set Matches = regEx.Execute(str)
Ergebnis = str
'response.write Matches.Count
Für jedes Spiel in Spielen
Ergebnis = Ersetzen(Ergebnis, Match.Value, GetVar(Match.SubMatches(0)))
Nächste
set Matches = nichts
setze regEx = nichts
Txt2Value = Ergebnis
Endfunktion
Funktion Var2Value(var_name)
Var2Value = Txt2Value(var_name, 0)
end
Funktionsaufrufmethode:
Var2Value("Benutzer aktualisieren setzen Passwort='{Passwort}', Gruppe={Gruppe}, Name='{Benutzername}', wobei Konto='{Konto}'"
Var2Value ruft Txt2Value auf. Txt2Value findet alle Variablennamen und ruft GetVar auf, um die Variablenwerte abzurufen und zu ersetzen. Tatsächlich ermöglicht der direkte Aufruf von Txt2Value(str,1) auch vier arithmetische Operationen an String-Werten.