你好我需要回应javascript代码,但我不知道要逃避单引号。 如果我更改单引号并用双引号替换它,我对此更改有任何问题吗?
(function() {
var as = document.createElement('script');
as.type = 'text/javascript';
as.async = true;
as.src = "https://bf1cthsdr.cloudfront.net/atrk.js";
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(as, s);
})();
我需要做这样的回音:
echo '(function() { var as = document.createElement('script'); as.type = 'text/javascript'; as.async = true; as.src = "https://d31qbv1cthcecs.cloudfront.net/atrk.js"; var s = document.getElementsByTagName('script')[0];s.parentNode.insertBefore(as, s); })();';
答案 0 :(得分:3)
如果您想避免在字符串文字中转义引号,请使用PHP's Heredoc syntax
echo <<<END
(function() { var as = document.createElement('script'); as.type = 'text/javascript'; as.async = true; as.src = "https://bf1cthsdr.cloudfront.net/atrk.js"; var s = document.getElementsByTagName('script')[0];s.parentNode.insertBefore(as, s); })();
END;
如果您愿意花时间逃避特殊字符,则需要使用\
字符来逃避JavaScript中的'
字符:
echo '(function() { var as = document.createElement(\'script\');...etc...';
// ^ ^
一个好的IDE将语法突出显示您的PHP,因此应该更容易看到文本被错误地转义。
组织代码的更好方法是将JS移动到单独的文件中:
<子>的script.js 子>(function() { var as = document.createElement('script'); as.type = 'text/javascript'; as.async = true; as.src = "https://bf1cthsdr.cloudfront.net/atrk.js"; var s = document.getElementsByTagName('script')[0];s.parentNode.insertBefore(as, s); })();
<子>的script.php 子>
...other code...
include('script.js');
...more code...
这更好的原因是因为您可以在编辑器中单独修改JS代码,允许您使用语法突出显示您的JS。
答案 1 :(得分:2)
要逃避'
,您需要在其前面放置\
。由于您的字符串用单引号括起来,因此其中的每个引号都需要看起来像\'
。
如果你的字符串用双引号括起来也是如此。您需要使用\"
转义字符串中的所有双引号。
echo '(function() { var as = document.createElement(\'script\'); as.type = \'text/javascript\'; as.async = true; as.src = "https://d31qbv1cthcecs.cloudfront.net/atrk.js"; var s = document.getElementsByTagName(\'script\')[0];s.parentNode.insertBefore(as, s); })();';
答案 2 :(得分:0)
如果您有很多引号放在引号内,那么请执行以下操作:
echo "(function() { var as = document.createElement('script'); as.type = 'text/javascript'; as.async = true; as.src = 'https://d31qbv1cthcecs.cloudfront.net/atrk.js'; var s = document.getElementsByTagName('script')[0];s.parentNode.insertBefore(as, s); })();";
您不能将相同类型的引号放在另一个中,因为PHP会查找未使用\
转义的下一个匹配引号。
我通常在单引号内放置双引号以允许PHP变量插入,因为如果有很多引号,它会保存我命中Shift键,键入双引号需要。