nhconch [Trabajo original]
Los amigos que han usado PHP saben que el uso de variables en PHP es flexible y conveniente, especialmente la conversión de nombre-valor de variable en cadenas se puede realizar fácilmente, lo que hace que todo el código PHP sea más conciso y hermoso. Por ejemplo, solo es necesario escribir una declaración SQL para actualizar la base de datos: "actualizar usuarios establecer contraseña='$contraseña', grupo=$grupo, nombre='$nombre de usuario' donde cuenta='$cuenta'", donde $contraseña , $grupo, $nombre de usuario y $cuenta serán reemplazados por los valores reales de las variables. Para lograr la misma función en ASP, debe escribir: "actualizar usuarios establecidos contraseña='" & contraseña & "',group=" & grupo &. ",nombre= '" & nombre de usuario & "' donde cuenta='" & cuenta & "'", que parece detallado y feo. Si se trata de un lenguaje de inserción y hay muchos campos insertados, comprobar la correspondencia entre campos y valores será un proceso doloroso.
Ahora veamos cómo implementar una transformación similar de nombre-valor de variable en ASP.
La idea
es que, primero, debe haber una manera de distinguir los nombres de las variables que deben reemplazarse con valores reales del texto normal y luego reemplazar todos los nombres de las variables encontradas con los valores reales que representan;
El primer punto se puede encontrar a través de expresiones regulares. Aquí no usamos la representación de variables de PHP, sino que usamos el número grande {} como carácter límite del nombre de la variable. La representación de cadena se convierte en contraseña = '{contraseña}', grupo = {. grupo}.
El segundo punto es la clave para la conversión de nombre-valor de variable. El valor de la variable se obtiene a través del nombre de la variable. Al observar la información de ASP, no encontramos un método de implementación directo, pero hay una función Ejecutar que nos llamó la atención. Por la descripción de la información, sabemos que Ejecutar puede ejecutar la cadena válida entrante como una sincronización de ejecución de código. , solo necesitamos escribir una pequeña función para lograr nuestro objetivo. El código central es:
función ObtenerVar(var_name)
Ejecutar("función get_value(): get_value=" & var_name & ": finalizar función")
getvar=obtener_valor()
la implementación
de la función final
:
función ObtenerVar(var_name)
Ejecutar("función get_value(): get_value=" & var_name & ": finalizar función")
getvar=obtener_valor()
función final
función Txt2Value(cadena, nivel)
tenue regEx, coincidencias, resultado
Establecer expresión regular = nueva expresión regular
seleccionar nivel de caso
case 0 regEx.Pattern = "{(w+)}" 'El nombre de la variable es válido
caso 1 regEx.Pattern = "{([w+-*/\<>=]+)}" 'Los nombres de variables y los operadores son válidos
'case 2 regEx.Pattern = "{([ws]+)}" 'Todos los caracteres excepto los de nueva línea son válidos
caso más función de salida
finalizar seleccionar
'regEx.Patrón = "{(w+)}"
regEx.IgnoreCase = verdadero
regEx.Global = verdadero
Establecer coincidencias = regEx.Execute(str)
Resultado = cadena
'respuesta.escribir Coincidencias.Contar
Para cada partido en partidos
Resultado = Reemplazar (Resultado, Coincidencia.Valor, GetVar(Match.SubMatches(0)))
Próximo
establecer coincidencias = nada
establecer expresiones regulares = nada
Txt2Value = Resultado
función final
función Var2Value(var_name)
ValorVar2 = ValorTxt2(nombre_var, 0)
de función final
:
Var2Value("actualizar usuarios configurar contraseña='{contraseña}', grupo={grupo}, nombre='{nombre de usuario}' donde cuenta='{cuenta}'"
Var2Value llama a Txt2Value. Txt2Value encuentra todos los nombres de variables y llama a GetVar para obtener los valores de las variables y reemplazarlos. De hecho, llamar directamente a Txt2Value(str,1) también permite cuatro operaciones aritméticas en valores de cadena.