2011-01-21 2 views
0

문제가되는 코드를 제거하고 일부 구두점을 유지해야하는 ColdFusion 양식이 있습니다.ColdFusion 양식의 문자 (예 : 따옴표 또는 &) HTML 이름을 표시하지 않습니다.

제 개발에서는 ReReplaceNoCase()이라는 기능과 RegEx 더미를 설정하여 거의 모든 것을 정리하고 3 가지 변수로 남겨 둡니다. 하나는 사진의 이름을 바꾸는 데 사용되고 다른 하나는 alt 광고 제목을 나타내며 세 번째는 <h1> 태그의 제품 제목이됩니다

하지만 이상한 문제가 발생했습니다. 필자의 입력에서는 이중 따옴표는 &quot;과 같이 작은 따옴표는 제외하고 HTML 이름을 얻습니다. 고도와 제목이 될 - - 파일 이름

Great leather harnesses and more에게이 될 .jpg와 concats

_Great_leather_harnesses_and_more_ : 나는 ""Great" leather harnesses & More!" 같은 문자열이있을 때

예를 들어, 나는 다시 내 프로젝트에 대한 가능한 3 문자열을 얻을

Great leather harnesses and more! 속성 - 내 <h1>

말썽 내 폼을 제출 인이된다 큰 따옴표는 &quot;이고 느낌표는 인 경우 &amp;이지만 !입니다.

양식에 글자 만 내 기능을 게시하도록하려면 어떻게해야 HTML 이름이있는 모든 문자를 검토하고 압축 할 필요가 없습니까? 그런데 <input type="text"...<textarea> 중 하나와 동일한 결과가 나타납니다. 추가 된 형태 및 유효성 검사 코드 - -

내가 페이지의 머리에 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />를 선언있어 중요한 경우

편집 ...

<cfset string = #form.product_name#> 
    <cfset replaceQuotes = ReReplaceNoCase(string, "(&quo;)", "", "all")> 
    <cfset replaceAnd = ReReplaceNoCase(replaceQuotes, "(&amp;)|(&)|(amp;)", " and ", "all")> 
    <cfset replacePercent = ReReplaceNoCase(replaceAnd, "\%", " Percent ", "all")> 
    <cfset scrubName = ReReplaceNoCase(replacePercent, "[^a-zA-Z0-9]", "_", "all")> 
    <cfset cleanFileName = ReReplaceNoCase(scrubName, "[_]{2,}", "_", "all")> 
    <cfset cleanAlt = ReReplaceNoCase(scrubName, "[_]", " ", "all")> 
    <cfset headlinetoClean = ReReplaceNoCase(replacePercent, "[^a-zA-Z0-9.,!'\-\+]", " ", "all")> 
    <cfset cleanHeadline = ReReplaceNoCase(headlinetoClean, "[\s]{2,}", " ", "all")> 

: 여기

는 정규식 내 scrubing의 bubles있어

제 양식 :

몇 가지 유효성 확인 - 그 사람이 문제가 될 수 있을까요? :

<cfif not len(trim(form.product_name))> 
    <cfset arrayAppend(errors, "You forgot to name the product")> 
<cfelse> 
    <cfset form.product_name = htmlEditFormat(trim(form.product_name))> 
</cfif> 

저는이 RegEx에서 매우 신선합니다. 저는 이것에 대해 더 똑똑한 방법이 있다고 확신합니다. 그러나이 메커니즘은 대부분 작동하는 것 같습니다.

+0

질문이 명확하지 않습니다. 예를 들어 입력 및 원하는 출력에 문제가 있습니까? – orangepips

+0

나쁜 또는 원치 않는 입력을 제공하지 않는 클라이언트에 의존하는 것은 일반적으로 나쁜 생각입니다. 당신의 임무는 모든 입력을 받아들이고 요구 사항을 충족 할 때까지 청소하는 것입니다. 다른 것은 문제를 요구하고 있습니다. 말 그대로. – Tomalak

+0

예제를 추가했습니다 .. – Ofeargall

답변

관련 문제