2011-01-31 3 views
0

내 웹 사이트에 대한 모든 요청에 ​​대해 호출되는 HTTPModule을 만들었습니다. 모듈 내부에서 클라이언트에 다시 전송되기 전에 마크 업을 조작 할 수있는 HTTPApplication.Context.Response.Filter에 대한 자체 필터 래퍼를 만들었습니다.HTTPmodule - Markup 바꾸기

아이디어는 특정 단어/구를 검색하여 데이터베이스에 저장 될 주어진 언어의 동일한 단어/구로 대체하려고한다는 것입니다.

내가 바꾸려고하는 단어 중 하나가 "암호"입니다. 문제는 _ctl122_txtPassword라는 마크 업에 컨트롤이 있다는 것입니다. 필자가 필자의 필터에있을 때 문자열 조작 (검색/바꾸기/etc.)을 수행하고 있으므로 컨트롤 이름이 모든 종류의 항목을 손상시키는 _ctl122_txtTranslation으로 이름이 변경됩니다. <input type="password" style="width: 200px;" class="formfield" id="_ctl22_txtPassword" name="_ctl22:txtPassword">

을하지만이에 일치하는 항목을 바꾸시겠습니까 : 나는 몇 가지 정규식 솔루션을 시도 <td align="right" class="formlabel">Password:</td>

하지만 정규식에서 멀리 나는 내가이의 일치를 교체하려는 해달라고 그래서

닌자 그래서이 방법이 될 수 있지만 그냥 잘 모르겠다.

내가 시도한 다른 대안은 실제로 '> 비밀번호'문자열을 대체하는 것입니다.

도움을 미리 감사드립니다.

답변

0

HTML의 특성으로 인해 모든 경우를 처리 할 정규 표현식을 작성하는 것이 어렵습니다. 내가가는 경우

당신은

http://snook.ca/archives/active_server_pages/vbscript_code_t

가 더 나은 솔루션은 HTML 구문 분석 도구 (HTML 민첩성 팩)

http://social.msdn.microsoft.com/Forums/en/regexp/thread/3b0a595b-cd09-446f-bbcb-d826511c364e

을 사용할 수 있습니다 시작 지점으로 사용할 수 이렇게하려면 (다중 언어 사이트처럼 들릴 수 있습니다.) 리소스 파일

또는 매크로 정규식을 사용하여 쉽게 정규식을 찾을 수 있습니다. @@의

<td align="right" class="formlabel">@@[email protected]@:</td> 
+0

감사합니다, djeeg와

예를 들면 .... 나는 일반적으로 또한 리소스 파일을 사용하지만, 우리가 할 수없는 이유가있다. 저는 토큰 아이디어가 마음에 들었고 저는 아주 원시 패턴 매칭과 함께 사용할 것이라고 생각합니다. – bullroa

관련 문제