nhconch [Оригинальная работа]
Друзья, которые использовали PHP, знают, что использование переменных в PHP является гибким и удобным, особенно можно легко реализовать преобразование имени переменной в строки, что делает весь код PHP более кратким и красивым. Например, оператор SQL для обновления базы данных достаточно написать: «обновить пользователей, установите пароль='$пароль', группа=$группа, имя='$имя_пользователя' где учетная запись='$аккаунт'», где $пароль , $group, $username и $account будут заменены фактическими значениями переменных. Чтобы добиться той же функции в ASP, вы должны написать: «обновить пользователи, установившие пароль='» & пароль & «',group=" & group &. ",name= '" & username & "' где account='" & account & "'", что выглядит многословно и некрасиво. Если это язык вставки и вставленных полей много, проверка соответствия полей и значений будет мучительным процессом.
Теперь давайте посмотрим, как реализовать подобное преобразование имени-значения переменной в ASP.
Идея
состоит в том, что во-первых, должен быть способ отличить имена переменных, которые необходимо заменить фактическими значениями, от обычного текста, а затем заменить все найденные имена переменных фактическими значениями, которые они представляют;
Первый момент можно найти с помощью регулярных выражений. Здесь мы не используем представление переменных PHP, а используем большое число {} в качестве граничного символа имени переменной. Строковое представление становится паролем='{пароль}',группа ={. группа}.
Второй момент – это ключ к преобразованию имени переменной. Значение переменной получается через имя переменной. Просматривая информацию ASP, мы не нашли прямого метода реализации, но есть функция Execute, которая привлекла наше внимание. Из описания информации мы знаем, что 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()
конечная функция
функция Txt2Value(str, level)
dim regEx, Совпадения, Результат
Установить регулярное выражение = новое регулярное выражение
выберите уровень дела
case 0 regEx.Pattern = "{(w+)}" 'Имя переменной допустимо
case 1 regEx.Pattern = "{([w+-*/\<>=]+)}" 'Имена переменных и операторы допустимы
'case 2 regEx.Pattern = "{([ws]+)}" 'Все символы, кроме символов новой строки, допустимы
случай иначе функция выхода
конец выбора
'regEx.Pattern = "{(w+)}"
regEx.IgnoreCase = правда
regEx.Global = правда
Установить совпадения = regEx.Execute(str)
Результат = ул
'response.write Matches.Count
За каждый матч в матчах
Результат = Заменить(Результат, Матч.Значение, GetVar(Match.SubMatches(0)))
Следующий
установить Совпадения = ничего
установить регулярное выражение = ничего
Txt2Value = Результат
конечная функция
функция Var2Value(var_name)
Var2Value = Txt2Value(var_name, 0)
Конец
Метод вызова функции:
Var2Value("обновить набор пользователей, пароль='{пароль}', группа={группа}, имя='{имя пользователя}', где аккаунт='{аккаунт}'"
Var2Value вызывает Txt2Value. Txt2Value находит все имена переменных и вызывает GetVar, чтобы получить значения переменных и заменить их. Фактически, прямой вызов Txt2Value(str,1) также позволяет выполнять четыре арифметические операции над строковыми значениями.