nhconch [원작]
PHP를 사용해 본 친구들은 PHP에서 변수를 사용하는 것이 유연하고 편리하다는 것을 알고 있습니다. 특히 문자열의 변수 이름-값 변환을 쉽게 구현할 수 있어 전체 PHP 코드를 더욱 간결하고 아름답게 만듭니다. 예를 들어, 데이터베이스를 업데이트하는 SQL 문은 다음과 같이 작성하면 됩니다. "update users set 비밀번호='$password', group=$group, name='$username' where account='$account'", where $password , $group, $username 및 $account는 실제 변수 값으로 대체됩니다. ASP에서 동일한 기능을 수행하려면 "update users set 비밀번호='" & 비밀번호 & "',group=" & group &를 작성해야 합니다. ",name= '" & 사용자 이름 & "' where account='" & account & "'", 장황하고 보기 흉해 보입니다. 이것이 삽입 언어이고 삽입된 필드가 많다면, 필드와 값 사이의 대응 관계를 확인하는 것은 고통스러운 과정이 될 것입니다.
이제 ASP에서 유사한 변수 이름-값 변환을 구현하는 방법을 살펴보겠습니다.
먼저, 실제 값으로 대체해야 하는 변수 이름을 일반 텍스트와 구별한 다음, 발견된 모든 변수 이름을 해당 값이 나타내는 실제 값으로 대체할 수 있는 방법이 있어야 한다는 것입니다
.
첫 번째 점은 정규 표현식을 통해 찾을 수 있습니다. 여기서는 PHP의 변수 표현을 사용하지 않고 변수 이름의 경계 문자로 큰 숫자 {}를 사용합니다. 문자열 표현은 다음과 같습니다. 그룹}.
두 번째 포인트는 변수 이름-값 변환의 핵심입니다. 변수 이름을 통해 변수 값을 얻습니다. ASP 정보를 보면 직접적인 구현 방법을 찾지 못했지만 우리의 관심을 끌었던 Execute 함수가 있습니다. 정보 설명을 통해 Execute가 들어오는 유효한 문자열을 이런 방식으로 실행할 수 있다는 것을 알고 있습니다. , 목표를 달성하려면 작은 함수만 작성하면 됩니다. 핵심 코드는 다음과 같습니다.
함수 GetVar(var_name)
Execute("function get_value(): get_value=" & var_name & ": 함수 종료")
getvar=get_value()
최종 함수
구현을
위한 전체 코드:
함수 GetVar(var_name)
Execute("function get_value(): get_value=" & var_name & ": 함수 종료")
getvar=get_value()
끝 함수
function Txt2Value(str, level)
희미한 정규식, 일치, 결과
regEx 설정 = 새 RegExp
케이스 수준 선택
case 0 regEx.Pattern = "{(w+)}" '변수 이름이 유효합니다.
사례 1 regEx.Pattern = "{([w+-*/\<>=]+)}" '변수 이름과 연산자가 유효합니다.
'case 2 regEx.Pattern = "{([ws]+)}" '개행 문자를 제외한 모든 문자가 유효합니다.
그렇지 않으면 종료 기능
선택 종료
'regEx.Pattern = "{(w+)}"
regEx.IgnoreCase = true
regEx.Global = 참
일치 항목 설정 = regEx.Execute(str)
결과 = str
'response.write Matches.Count
경기의 각 경기에 대해
결과 = 바꾸기(결과, Match.Value, GetVar(Match.SubMatches(0)))
다음
일치 항목 설정 = 없음
regEx = 아무것도 설정하지 않음
Txt2Value = 결과
끝 함수
함수 Var2Value(var_name)
Var2Value = Txt2Value(var_name, 0)
end 함수
호출 방법:
Var2Value("사용자가 비밀번호를 설정한 업데이트='{password}', 그룹={group}, name='{username}' where account='{account}'"
Var2Value는 Txt2Value를 호출합니다. Txt2Value는 모든 변수 이름을 찾고 GetVar를 호출하여 변수 값을 가져와 바꿉니다. 실제로 Txt2Value(str,1)을 직접 호출하면 문자열 값에 대한 네 가지 산술 연산도 허용됩니다.