작은 따옴표를 어떻게 피할 수 있습니까?


188

'JavaScript에서 (작은 따옴표)를 어떻게 피할 수 있습니까?

이것은 내가 그것을 사용하려고하는 곳입니다.

<input type='text' id='abc' value='hel'lo'>

위 코드의 결과는 텍스트 상자에 "hel"으로 채워집니다. 나는 '를 \'로 바꾸려고했지만 이것이 얻는 것입니다.

<input type='text' id='abc' value='hel\'lo'>

위 코드의 결과는 텍스트 상자에 "hel \"로 채워집니다.

작은 따옴표를 어떻게 이스케이프 처리 할 수 ​​있습니까?


이봐 라비, 이것은 HTML 질문에 더 가깝습니다. 질문을 HTML로 다시 태그했지만 질문에서 질문을 변경하고 싶을 수도 있습니다.
Benjamin Manns

답변:


358

HTML 엔터티를 사용할 수 있습니다.

  • &#39; ...에 대한 '
  • &#34; ...에 대한 "
  • ...

자세한 내용 은 HTML의 문자 엔터티 참조를 살펴보십시오 .


39
해야 하나의 속성 값에 따옴표를 사용합니까?
Gumbo

5
@Pascal MARTIN : XML은 속성 값에 작은 따옴표도 허용합니다. ( w3.org/TR/xml/#NT-AttValue 참조 )
Gumbo

4
@ 검보 : 와우! 작은 따옴표 arround 속성 값을 사용하는 XML 문서를 본 적이 없다고 생각합니다. 그래서 나는 이것이 실제로 유효하다고 생각하지 않았다; 나는 질문에 답하면서 무언가를 다시 한번 배웠다. 의견을 주셔서 감사합니다!
Pascal MARTIN

5
나는 이것이 오래되었다는 것을 알고 있지만 다음과 같은 HTML 엔터티가 있음을 주목할 가치가 있다고 생각합니다 ".&quot;
daiscog

1
@Pascal, w3c validator는 작은 따옴표가 속성에 유효 함을 보여줍니다. 그리고 참조 stackoverflow.com/questions/2210430/...을
ChrisJJ

62

&apos;(IE에서는 iffy) 또는 &#39;(모든 곳에서 작동해야 함 )을 사용할 수 있습니다 . 포괄적 인 목록은 W3C HTML5 명명 된 문자 참조 또는 WebPlatform.orgHTML 엔티티 표를 참조하십시오 .


와우, 내가 쓴 이후 시간이 오래되었습니다. 그것을 잡아 주셔서 감사합니다-W3C와 WebPlatform.org에서 두 테이블에 대한 링크를 업데이트했습니다.
Benjamin Manns

VXML <var>에서 문자열 변수 값은 속성 정의의 일반적인 큰 따옴표 안에 작은 따옴표로 표시되기 때문에 추가 이스케이프가 필요한 VXML <var> Expression 속성을 제외하고는 "모든 곳에서"작동합니다. <var name = "myvar" expr = " 'hel \ & apos; lo'"/>
Steve Cohen

9

HTML과 관련하여 HTML을 사용하여 해당 문자를 나타내야합니다. 그리고 HTML의 경우 숫자 참조 &#39; ( &#x27;16 진수) 를 사용해야합니다 .

<input type='text' id='abc' value='hel&#39;lo'>

그러나 나는 당신이 무엇을 의미하는지 이해하지 못했 context of html습니까?
coding_idiot

@coding_idiot 파싱 ​​과정에서 HTML 파서가 접할 수 있는 다른 토큰을 살펴보십시오 . 각 상태에는 입력을 기반으로 트리거되는 서로 다른 구문 분석 규칙 세트가 있습니다. 모든 주에서 문자 참조를 허용하지는 않습니다. 이제 속성 값 (작은 따옴표) 을 보면 &a가 문자 참조의 시작을 나타냄을 알 수 있습니다 .
Gumbo

7

텍스트 엔티티 (ASCII 39)로 표시하십시오.

<input type='text' id='abc' value='hel&#39;lo'>

6

아마도 가장 쉬운 방법 :

<input type='text' id='abc' value="hel'lo">


-1

자바 스크립트 내장 함수 사용 탈출 및 이스케이프 제거

예를 들어

var escapedData = escape("hel'lo");   
output = "%27hel%27lo%27" which can be used in the attribute.

again to read the value from the attr

var unescapedData = unescape("%27hel%27lo%27")
output = "'hel'lo'"

속성에 사용할 거대한 JSON 문자열 화 데이터가있는 경우 유용합니다.


escape유니 코드 안전하지 않습니다. 사양은 그 사용을 권장하지 않습니다.
Quentin
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.