逃避标题中的单引号

时间:2016-05-19 13:53:57

标签: javascript jquery html

我想在图像标题中包含带单引号的字符串。

myTitle = "abc '' def";
document.write("<img title='" + myTitle + "' src='http://www.example.com/image.png' />")

此处,只显示子字符串abc '' def,而不是abc。因此,只需删除单引号后的所有内容。

由于标题实际上来自数据库,我不能只做\',所以我需要在title='" + myTitle + "'转义它。

那是否有功能?

Here is a fiddle

5 个答案:

答案 0 :(得分:4)

您可以使用双引号:

myTitle = "abc '' def";
document.write('<img title="' + myTitle + '" src="http://www.example.com/image.png" />');

或逃避报价:

myTitle = "abc '' def";
document.write("<img title='" + myTitle.replace(/'/g, '&#39;') + "' src='http://www.example.com/image.png' />");

答案 1 :(得分:0)

您可以尝试对字符串进行html-entity-encoding,如下面的答案所示:https://stackoverflow.com/a/18750001/773259

这会将您的单引号换成其unicode值&#39;

答案 2 :(得分:0)

简单替换:

myTitle = "abc '' def";
myTitle = myTitle.replace(/'/g, "\\'");
document.write("<img title='" + myTitle + "' src='http://www.example.com/image.png' />")

答案 3 :(得分:0)

你需要在html代码的字符串表示中用双引号交换双引号,如下所示:

myTitle = "abc '' def";

document.write('<img title="' + myTitle + '" src="https://www.google.de/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png" />')

这里是JSFiddle

这里是Diffchecker

你编写它的方式使得代码在标题字符串中的第一个单引号处制动,因为它跟随另一个单引号。

答案 4 :(得分:0)

您可以通过将所有单引号替换为其html实体来解决您的问题。

myTitle = "abc '' def";
document.write("<img title='" + myTitle.replace(/'/g, "&apos;") + "' src='http://www.example.com/image.png' />")