我有一个带有 onclick 函数的按钮,我将几个 php 变量发送到我的 javascript 函数。这一切都工作正常,除非我在文本中有一个 ' 。
所以我会有一个按钮
<button onclick=\"selected_comp('" . preg_replace("/\r|\n/", "", $comp_row['comments']) . "')\"
然后我就会有一个函数
function selected_comp(comments){
console.log(comments);
}
我尝试过 preg_replace 和 json_encode 但都给了我错误(json_encode 一般都会给我错误,而使用 preg_replace 它在大多数情况下都可以工作,但是每当这个 ' 字符出现在注释中时它就不起作用。我如何确定无论里面有什么字符,这都会被视为纯文本。
error: (index):1 Uncaught SyntaxError: Invalid or unexpected token
最佳答案
从你的PHP代码的编写方式来看,如果$comp_row['comments']
中的文本是 text
那么生成的 JS 代码将是
<button onclick="selected_comp('text')">
(为了清楚起见,我在其中添加了 <
和 >
)。
现在,如果文本是 text with ' embedded
这将导致
<button onclick="selected_comp('text with ' embedded')">
然后你就清楚地明白为什么它会引发错误。
有很多不同的解决方案可以避免这种情况,例如@Terminus建议的解决方案。
但如果不深入改变 PHP 脚本结构,应用起来可能并不容易。
因此,这是一个可能看起来有点奇怪的建议,但会继续使用您当前的代码组织:
button onclick=\"selected_comp('" .
str_replace(["\r", "\n", "'"], ["", "", "\\'"], $comp_row['comments']) .
"')\"
首先您可以注意到我从 preg_replace()
更改为至str_replace()
(无论如何 preg_replace()
已经太过分了)。
重点是,现在,不仅仅是 \r
和\n
被替换为“无”,但也 '
已逃脱。
关于javascript - 将 PHP 变量传递给带有特殊字符的 JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39811858/