nhconch [Travail original]
Les amis qui ont utilisé PHP savent que l'utilisation de variables en PHP est flexible et pratique, en particulier la conversion nom-valeur de variable en chaînes peut être facilement réalisée, rendant l'ensemble du code PHP plus concis et plus beau. Par exemple, une instruction SQL pour mettre à jour la base de données doit uniquement être écrite : "update users set password='$password', group=$group, name='$username' Where account='$account'", où $password , $group, $username et $account seront remplacés par les valeurs réelles des variables. Pour obtenir la même fonction dans ASP, vous devez écrire : "update users set password='" & password & "',group=" & group &. ",name= '" & username & "' où account='" & account & "'", ce qui semble verbeux et moche. S'il s'agit d'un langage d'insertion et qu'il y a beaucoup de champs insérés, vérifier la correspondance entre les champs et les valeurs sera un processus pénible.
Voyons maintenant comment implémenter une transformation nom-valeur de variable similaire dans ASP.
L'idée
est que d'abord, il doit y avoir un moyen de distinguer les noms de variables qui doivent être remplacés par des valeurs réelles du texte ordinaire, puis de remplacer tous les noms de variables trouvés par les valeurs réelles qu'ils représentent ;
Le premier point peut être trouvé via des expressions régulières. Ici, nous n'utilisons pas la représentation de variable de PHP, mais utilisons le grand nombre {} comme caractère limite du nom de variable. La représentation sous forme de chaîne devient password='{password}',group ={. grouper}.
Le deuxième point est la clé de la conversion nom-valeur de variable. La valeur de la variable est obtenue via le nom de la variable. En regardant les informations ASP, nous n'avons pas trouvé de méthode d'implémentation directe, mais il existe une fonction Execute qui a attiré notre attention. D'après la description des informations, nous savons qu'Execute peut exécuter la chaîne valide entrante en tant que synchronisation d'exécution de code. , il nous suffit d’écrire une petite fonction pour atteindre notre objectif. Le code de base est :
fonction GetVar(var_name)
Exécuter("function get_value(): get_value=" & var_name & ": end function")
getvar=get_value()
l'implémentation
de la fonction finale
:
fonction GetVar(var_name)
Exécuter("function get_value(): get_value=" & var_name & ": end function")
getvar=get_value()
fonction de fin
fonction Txt2Value(str, niveau)
dim regEx, Matchs, Résultat
Définir regEx = nouveau RegExp
sélectionner le niveau du dossier
case 0 regEx.Pattern = "{(w+)}" 'Le nom de la variable est valide
case 1 regEx.Pattern = "{([w+-*/\<>=]+)}" 'Les noms de variables et les opérateurs sont valides
'case 2 regEx.Pattern = "{([ws]+)}" 'Tous les caractères, à l'exception des caractères de nouvelle ligne, sont valides
sinon, quitter la fonction
fin de la sélection
'regEx.Pattern = "{(w+)}"
regEx.IgnoreCase = vrai
regEx.Global = vrai
Définir les correspondances = regEx.Execute(str)
Résultat = str
'response.write Correspondances.Nombre
Pour chaque match dans les matchs
Résultat = Remplacer (Résultat, Match.Value, GetVar (Match.SubMatches (0)))
Suivant
définir des correspondances = rien
définir regEx = rien
Txt2Value = Résultat
fonction de fin
fonction Var2Value(var_name)
Var2Value = Txt2Value(var_name, 0)
de fonction end
:
Var2Value("mettre à jour les utilisateurs définit le mot de passe='{mot de passe}', group={group}, name='{username}' où compte='{compte}'"
Var2Value appelle Txt2Value Txt2Value trouve tous les noms de variables et appelle GetVar pour obtenir les valeurs des variables et les remplacer. En fait, appeler directement Txt2Value(str,1) permet également quatre opérations arithmétiques sur les valeurs de chaîne.