文件名中的单引号 - javascript,php
如何处理必须存在的数据中的引用?
这个javascript语句正常工作,直到城市名称为“ST JOHN'S”。
我们无法更改数据库中城市名称的更改 - 或者 - 使用更可靠的密钥。
$('#map_output').html('<p><img src="img/map/<?=$CITY_OUT?>_map.PNG" width="600"></p>')
没有找到相关结果
已邀请:
7 个回复
朗排谎纷瘟
。 编辑:你使用它(sorta)像
:
但是
更具语义性 -
是关于生成JSON(内部,数据表示),而不是关于表示。 尼克克拉弗是对的 - 它也会奏效。 编辑:需要
正确渲染“'”
降女陷费券
来逃避报价,如下所示:
辰炔诚薯
您正在创建HTML属性,因此您需要对其进行HTML编码:
第二步可能没有太大的区别,因为你的URL中不太可能有
,
,
,
或
。但是如果你想要严格正确,你应该编码所有HTML属性。这是一个很好的习惯,所以你可以处理所有特殊字符。 最后,您正在创建一个JavaScript值,因此您需要对其进行JSON编码:
(编辑以添加JSON编码)
勘掸府迫路
唯一没有产生javascript错误的测试是我使用str_replace来实际逃避单引号。
豹芜澈
闯舱酮
我没有看到任何这些问题(除了JSON之外,我稍后会解释)。 我刚刚尝试了所有这些示例,尝试尽可能地模拟您的场景(甚至使用相同的文件名)....除了JSON示例之外,所有这些都正确地加载了图形。 JSON示例需要进行一些小调整以使其正常工作,但它也以可行的方式转义字符串。为了使它工作,你需要考虑到JSON产生一个完全引用的Javasscript字符串而不是像其他人那样转义它,所以你要修改输出以关闭引号并将字符串添加到一起,如下所示:
其他解决方案不需要这个。他们都按原样工作。正如我所说的,我尝试了它们,并且它们都将图形加载到页面中。 在上下文中,所有三种机制(转义
,实体
和URL编码
)都是有效的: 转义是有效的,因为你在Javascript的上下文中,所以反斜杠由Javascript处理,并且插入到页面中的最终生成的HTML将不包含它。 实体的工作原理是因为HTML将实体转换为映射的字符,因此HTML页面中的
与单引号相同,即使在属性值中也是如此。 URL编码有效,因为浏览器在加载URL时会对其进行翻译。 我建议URL编码在这种情况下是正确的解决方案,因为它用于URL。原因是虽然所有解决方案都适用于给定示例,但如果您有任何包含问号或&符号(
)或其他一些保留字符的示例,那么URL编码将是唯一可行的解决方案在这些情况下。另一方面,如果您在另一个上下文中的HTML页面中显示输出,那么实体就是您的选择。如果它只是在Javascript中使用,那么JSON就是答案。 但是你说没有人能做到这一点。我的问题是:你真的试过吗?你运行代码并且图形无法加载吗?它对我有用。另一方面,如果他们确实有效,但仍然没有“耍手段”,那么你真正想要的是什么? 我的猜测是你真正的意思是你想在那里得到一个简单的引号字符,但它有神奇的功效。这不可能发生;报价必须以某种方式或其他方式进行转义以使其工作,但是用户永远不会看到转义版本,因此无需担心它。 实际上,您应该转义或编码您输入或输出的所有字符串,以便无效字符可以正常工作。否则,奥布莱恩先生将难以在您的网站上输入他的名字,如果他管理它,您将无法在之后显示它。
师埠女
输出: