Javascript 要在onclick中使用的PHP字符串

Javascript 要在onclick中使用的PHP字符串,javascript,php,string,Javascript,Php,String,我需要正确地转义一个PHP字符串,以便它可以用作onclick中的字符串参数 我的字符串存储在$x中,它可能包含单引号(')、双引号(“)、符号(&)和反斜杠(\) 我认为这一准则是必要和充分的: <a onclick="alert('<?= str_replace(array("\\", "'"), array("\\\\",'\x27'), htmlspecialchars($x)) ?>')" href="#">Click here</a> htm

我需要正确地转义一个PHP字符串,以便它可以用作onclick中的字符串参数

我的字符串存储在
$x
中,它可能包含单引号(')、双引号(“)、符号(&)和反斜杠(\)

我认为这一准则是必要和充分的:

<a onclick="alert('<?= str_replace(array("\\", "'"), array("\\\\",'\x27'), htmlspecialchars($x)) ?>')" href="#">Click here</a>

htmlspecialchars
函数负责双引号和与符。
str\u replace
负责单引号和反斜杠。(我尝试在
htmlspecialchars
中使用ENT\u引号,但在这种情况下这是不够的。)

这可以简化吗?
我遗漏了什么吗?

你可能会发现分离两种不同语言的逻辑更容易。至少将字符串回送到javascript变量。在同一行中编写多种语言会耗尽你的精力。“我尝试在htmlspecialchars中使用ENT_引号,但在这种情况下这是不够的。”–当然不是,因为对于上下文HTML,这会逃逸一个完全不同的上下文的数据。也许PHP筛选器可以为您提供帮助:-但是它们有一些缺陷。请阅读评论以获得更多关于它们的信息。否则,也许更好的解决方案是preg_replace:Flosculus,我认为您的评论在这里最有用。如果您把它变成一个答案,我会接受它作为我问题的答案。