如何在标题属性中转义双引号


195

我正在尝试使用在锚的title属性中包含双引号的字符串。到目前为止,我尝试了这些:

<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阅读了问题……它说“单引号是不行的”。
尼尔斯·里德曼

2
@harpax-我很好奇为什么不能使用单引号?
伯特F 2010年

3
单引号不是有效的html。
skyfoot 2010年

1
您的第二个示例应该绝对完美。您在哪个浏览器中看到问题?
Olly Hodgson

1
@harpax:也许您应该澄清“单引号不是一个选择”的要求。我猜想,您不能在“ the'string”中提及单引号(如显示给用户),但是如上图所示,只要翻转单引号和双引号就可以了。
Christian.K 2010年

Answers:


283

这个变体-

<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,这里同样的问题。见文字“”。当用户将鼠标悬停在元素上时,它们会同时在IE和Chrome中显示。
rstackhouse

data-editable-note="<?php echo str_replace('"', '&quot;', $note); ?>"><?php echo mark::up($note); ?></div>
惊人地使用

22

这是从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    —   


3

使用&quot;是做到这一点的方法。我尝试了第二个代码段,它在Firefox和Internet Explorer中均可使用。


2

它可以与HTML Escape字符列表中的任何字符一起使用,但是我对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,因此这不是一个选择。
保罗

1

在至少一种情况下,使用单引号将不起作用,即如果您正在通过JavaScript创建“即时”标记。您使用单引号将字符串包含在内,然后标记中的任何属性都可以对其值使用双引号。


1

也许您可以使用JavaScript解决跨浏览器的问题。它使用了一种不同的转义机制,您显然已经很熟悉这种机制:

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

它并没有严格按照人们今天想要的方式来分隔HTML,JavaScript和CSS的功能,但是您需要让谁开心呢?您不认识的用户或技术人员?


可以以更加直接的方式获得所需结果时的过度杀伤。
Paul

-3

您可以使用此PHP代码列出特殊字符...

<table border="1"><?php for($i=33;$i<9000;$i++)echo "<tr><td>&#38;#$i;<td>&#".$i.";"; ?></table>
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.