php - 如何在javascript中正确使用引号

标签 php javascript

我正在使用一些像这样的 JavaScript:

echo '<a href="javascript:playSong'."('$row[artist]','$row[title]','$row[sourcefile]')".'">';

我的问题是有时我的$row[artist]$row[title]变量包含双引号。

当发生这种情况时,它会破坏 javascript:playSong();函数调用。

例如,如果该行的输出如下:

<a href="javascript:playSong('Danny Elfman','Beetlejuice Theme (Kamei Halloween Edit)','2009-10-31-10-52-01.4521.data','28330')">

一切都会好的。

但有时函数会是这样的:

<a href="javascript:playSong('Danny Elfman','Beetlejuice "Theme" (Kamei Halloween Edit)','2009-10-31-10-52-01.4521.data','28330')">

这会导致我的网站认为该命令以“主题”之前的双引号结束,从而导致它失败。

有没有办法我应该正确引用我的 javascript,以便它将函数内的双引号视为文本,而不是函数的结尾。

我正在使用addslashes()并尝试了各种其他编码,但似乎没有任何效果。

最佳答案

这里最好的解决方案是停止使用 href="javascript:... 并开始使用 unobtrusive JavaScriptprogressive enhancement

如果您确实想继续沿着这条路线走下去,那么您需要记住,您正在处理三种不同的语言,并在链中从另一种语言生成一种语言。

从 JavaScript 开始。然后让它与 HTML 一起工作。然后使其与 PHP 一起工作。

javascript:playSong('Danny Elfman','Beetlejuice "Theme" (Kamei Halloween Edit)','2009-10-31-10-52-01.4521.data','28330')

这里没有语法错误。字符串中只有双引号。

href="javascript:playSong('Danny Elfman','Beetlejuice "Theme" (Kamei Halloween Edit)','2009-10-31-10-52-01.4521.data','28330')"

现在您已将 JavaScript 嵌套在一个用双引号分隔的 HTML 属性中。这意味着 JS 中的双引号现在是一个问题,因为它在脚本中途终止了属性值。

以 HTML 的常用方式处理这些引号。将它们替换为 HTML 实体:"

href="javascript:playSong('Danny Elfman','Beetlejuice &quot;Theme&quot; (Kamei Halloween Edit)','2009-10-31-10-52-01.4521.data','28330')"

然后我们进入 PHP:

echo '<a href="javascript:playSong'."('$row[artist]','$row[title]','$row[sourcefile]')".'">';

处理引号内的引号是一件痛苦的事情。所以不要尝试。

href="javascript:playSong('<?php echo $row[artist] ?>','<?php echo $row[title] ?>','<?php echo $row[sourcefile]; ?>')"

你似乎在例子之间失去了争论。

遵循使用 PHP 将内容插入 HTML 的正常规则:htmlspecialchars

href="javascript:playSong('<?php echo htmlspecialchars($row[artist]); ?>','<?php echo htmlspecialchars($row[title]); ?>','<?php echo htmlspecialchars($row[sourcefile]); ?>')"

关于php - 如何在javascript中正确使用引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1657313/

相关文章:

php 变量未正确加载图像

javascript - 身份验证后无法从 Firebase 读取数据

javascript - 显示本地存储变量

javascript - ng-repeat 中的 Angularjs 函数调用了项目长度的多次

javascript - 如何在 nodejs 的 views 文件夹中包含 View 相关的 javascript (*.js) 文件?

javascript - 向下滚动时如何卡住表头及其上方的所有内容?

支持 ETAG 的 PHP REST API?

php - GraphicsMagick 中的 setCompression() 等效项是什么?

javascript - 如何在js中读取db值

PHP header 重定向在表单提交时不起作用