ChatGPT解决这个技术问题 Extra ChatGPT

我怎样才能逃脱单引号?

如何在 HTML 中转义 '(单引号)?

这是我尝试使用它的地方:

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

上述代码的结果是“hel”填充在文本框中。我试图用 \' 替换 ',但这就是我得到的。

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

上述代码的结果是“hel”填充在文本框中。

如何成功转义单引号?

嘿 Ravi,这更像是一个 html 问题。我将问题重新标记为 HTML,但您可能想在问题中更改它。

n
neaumusic

您可以使用 HTML 实体:

'为了 '

"为了 ”

...

更多信息,您可以查看 Character entity references in HTML


为什么要对属性值使用双引号?
@Pascal MARTIN:XML 也允许属性值使用单引号。 (见w3.org/TR/xml/#NT-AttValue
@Gumbo:哇!我认为我从未见过任何使用单引号包围属性值的 XML 文档;所以我不认为这实际上是有效的;;我只是(再次)在回答问题时学到了一些东西;所以,谢谢你的评论!
我知道这是旧的,但我认为值得注意的是 " 有一个 HTML 实体:&quot;
@Pascal,w3c 验证器显示单引号对属性有效。请参阅stackoverflow.com/questions/2210430/…
B
Benjamin Manns

您可以使用 &apos;(在 IE 中是不确定的)或 &#39;(应该在任何地方都可以使用)。如需完整列表,请参阅 W3C HTML5 Named Character ReferencesHTML entities table on WebPlatform.org


哇,好久没写这个了。感谢您的关注 - 我已经更新了 W3C 和 WebPlatform.org 上两个表格的链接。
这些工作“无处不在”,除了在 VXML 表达式属性中需要进一步转义,因为在 VXML 中,字符串变量值在属性定义的普通双引号内表示为单引号:
G
Gumbo

在 HTML 的上下文中,您需要使用 HTML 来表示该字符。对于 HTML,您需要使用 numeric character reference &#39;&#x27; 十六进制):

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

但我不明白您所说的 context of html 是什么意思?
@coding_idiot 看看不同的 tokens a HTML parser may encounter during the parsing process。每个状态都有一组不同的解析规则,这些规则基于输入触发。并非每个州都允许字符引用。现在,如果您查看 attribute value (single quoted),您可以看到 & 表示字符引用的开始。
P
Peter Mortensen

将其表示为文本实体(ASCII 39):

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

r
road242

可能是最简单的方法:

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

P
Peter Mortensen

如果由于某种原因您无法转义撇号字符并且您无法将其更改为 HTML 实体(在我的情况下是针对特定 Vue.js 属性),您可以使用 replace 将其更改为与 UTF 不同的撇号字符-8 个字符集,例如:

ʼ - U+02BC
’ - U+2019

这是解决问题的有效方法,我经常这样做。我只是直接粘贴字符。
如果可能的话,我会避免这种情况,并尝试解决根本问题。它可能会导致意想不到的问题。例如,如果用户打算包含代码示例,那么像这样更改字符会导致复制和粘贴代码示例的用户感到困惑。
F
Flimm

我个人觉得命名的 HTML 实体更容易记住:

’ for '(称为单引号或撇号,Unicode 字符 U+0027)

” for "(称为双引号或引号,Unicode 字符 U+0022)

演示:




L
Luca

您可以尝试使用:&#145;


R
Ram Bharlia

使用 javascript 内置函数 escape 和 unescape

例如

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 不是 Unicode 安全的。该规范建议不要使用它。
escape 已弃用。此外,这不是这里需要的转义类型,我们试图将 ' 转义为像 &apos;&#39; 这样的 HTML 实体,我们不尝试进行百分比编码,它有不同的用途 -案子。