제목 속성에서 큰 따옴표를 이스케이프 처리하는 방법


195

앵커의 제목 속성에 큰 따옴표가 포함 된 문자열을 사용하려고합니다. 지금까지 나는 이것을 시도했다.

<a href=".." title="Some \"text\"">Some text</a>
<!-- The title looks like `Some \` --!>

<a href=".." title="Some &quot;text&quot;">Some text</a>
<!-- The title looks like `Some ` --!>

작은 따옴표를 사용 하는 것은 옵션 이 아닙니다 .


18
@Haim은 질문을 읽었습니다. "작은 따옴표는 옵션이 아닙니다"라고 말합니다.
Nils Riedemann

2
@ harpax-왜 작은 따옴표가 옵션이 아닌지 궁금했습니다.
Bert F

3
작은 따옴표는 유효한 HTML이 아닙니다.
skyfoot

1
두 번째 예제는 완벽하게 작동합니다. 어떤 브라우저에서 문제가 발생합니까?
Olly Hodgson

1
@ harpax : 아마도 당신은 "한 따옴표는 옵션이 아닙니다"-요구 사항을 명확히해야합니다. 작은 따옴표 "ment ''in ''in 'string"은 옵션이 아니며 (사용자에게 표시되는 것처럼), Haim이 위에서 보여준 것처럼 작은 따옴표와 큰 따옴표를 뒤집는 것만으로도 괜찮을 것입니다.
Christian.K

답변:


284

이 변형-

<a title="Some &quot;text&quot;">Hover me</a>

정확하고 예상대로 작동합니다. 렌더링 된 페이지에 일반 따옴표가 표시됩니다.


네. <a href="#" title="Foo &quot;Bar&quot;">Testing</a>그리고 <a href="#" title="Smart quotes &#8221;Bar&#8220;">Testing too</a>나를 위해 작동합니다.
Olly Hodgson

5
@Maris : 음 ... & quot;를 만들 때 렌더링 된 페이지에 일반 따옴표가 표시되지 않습니다. (Firefox, Chrome). 왜?
Krzysztof Trzos

@Maris, 같은 문제가 있습니다. "& quot;"텍스트 참조 사용자가 요소 위로 마우스를 가져 가면 IE와 Chrome 모두에 나타납니다.
rstackhouse

속성 내에 포함 된 html 컨텐츠를 사용하여 놀랍게 작업했습니다 (자바 스크립트가 편집 가능한 텍스트 영역을 생성하기 위해) :data-editable-note="<?php echo str_replace('"', '&quot;', $note); ?>"><?php echo mark::up($note); ?></div>
WEBjuju

23

다음 은 archive.org의 캐시 된 페이지에서 가져온 HTML 이스케이프 문자 스 니펫입니다 .

&#060   |   less than sign  <       
&#064   |   at sign @       
&#093   |   right bracket   ]       
&#123   |   left curly brace    {       
&#125   |   right curly brace   }       
&#133   |   ellipsis    …       
&#135   |   double dagger   ‡       
&#146   |   right single quote  ’       
&#148   |   right double quote  ”       
&#150   |   short dash  –       
&#153   |   trademark   ™       
&#162   |   cent sign   ¢       
&#165   |   yen sign    ¥       
&#169   |   copyright sign  ©       
&#172   |   logical not sign    ¬       
&#176   |   degree sign °       
&#178   |   superscript 2   ²       
&#185   |   superscript 1   ¹       
&#188   |   fraction 1/4    ¼       
&#190   |   fraction 3/4    ¾       
&#247   |   division sign   ÷       
&#8221  |   right double quote  ”       
&#062   |   greater than sign   >   
&#091   |   left bracket    [   
&#096   |   back apostrophe `   
&#124   |   vertical bar    |   
&#126   |   tilde   ~   
&#134   |   dagger  †   
&#145   |   left single quote   ‘       
&#147   |   left double quote   “   
&#149   |   bullet  •   
&#151   |   longer dash —   
&#161   |   inverted exclamation point  ¡   
&#163   |   pound sign  £   
&#166   |   broken vertical bar ¦   
&#171   |   double left than sign   «   
&#174   |   registered trademark sign   ®   
&#177   |   plus or minus sign  ±   
&#179   |   superscript 3   ³   
&#187   |   double greater-than sign    »   
&#189   |   fraction 1/2    ½   
&#191   |   inverted question mark  ¿   
&#8220  |   left double quote   “   
&#8212  |   dash    —   

9

이스케이프 코드 &#34;를 대신 사용할 수도 있습니다 &quot;.


3

사용 &quot;하는 방법입니다. 두 번째 코드 스 니펫을 시도했으며 Firefox와 Internet Explorer에서 모두 작동합니다.


2

HTML 이스케이프 문자 목록 의 모든 문자에서 작동 할 수 있지만 Java 프로젝트와 동일한 문제가 있습니다. 나는 StringEscapeUtils.escapeHTML("Testing \" <br> <p>")제목을 사용했다 <a href=".." title="Test&quot; &lt;br&gt; &lt;p&gt;">Testing</a>.

StringEscapeUtils를로 변경하고 StringEscapeUtils.escapeJavascript("Testing \" <br> <p>")모든 브라우저에서 작동 했을 때만 작동했습니다 .


내 의견으로는 최고의 솔루션
Mohammed Rafeeq

Java를 사용하는 경우에는 좋지만 원래 질문자는 HTML을 요청하므로 옵션이 아닐 수 있습니다.
Paul

1

작은 따옴표를 사용할 수없는 상황이 하나 이상 있습니다. JavaScript에서 "즉석"마크 업을 만드는 경우입니다. 작은 따옴표를 사용하여 문자열을 포함하면 마크 업의 모든 속성에 값에 대한 큰 따옴표가있을 수 있습니다.


1

아마도 JavaScript를 사용하여 크로스 브라우저 문제를 해결할 수 있습니다. 다른 이스케이프 메커니즘을 사용합니다.

(reference-to-the-tag).title = "Some \"text\"";

요즘 사람들이 원하는 방식으로 HTML, JavaScript 및 CSS의 기능을 엄격하게 분리하지는 않지만 누가 행복해야합니까? 당신이 모르는 사용자 또는 기술자?


원하는 eult가 훨씬 더 직접적인 방식으로 달성 될 수있을 때 과잉 행동.
Paul

-3

이 PHP 코드를 사용하여 특수 문자를 나열 할 수 있습니다 ...

<table border="1"><?php for($i=33;$i<9000;$i++)echo "<tr><td>&#38;#$i;<td>&#".$i.";"; ?></table>
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.