在PHP中回显Javascript时需要转义哪些字符?

时间:2009-12-17 22:58:00

标签: php analytics nowdoc

我正在尝试在PHP if语句中回显用于Google AdWords转换跟踪代码的Javascript。我已经做了一堆谷歌搜索,但似乎无法找到一个确定的列表,我需要逃避什么字符,以使代码正确执行。有人有建议吗?

第一段代码是使用转换代码段调用include的if语句的开头:

if ( @mailit ) {
include ("conversioncodes.php");

这是conversioncodes.php的内容,其中包含我试图弄清楚如何正确转义的代码片段。目标是在满足if语句的条件时让转换代码跟踪转换。

echo "<!-- Google Code for Homepage Form Submit Conversion Page -->
<script type="text/javascript">
<!--
var google_conversion_id = XXXXXXXXXX;
var google_conversion_language = "en";
var google_conversion_format = "3";
var google_conversion_color = "ffffff";
var google_conversion_label = "XXXXXXXXXXXXXXX";
var google_conversion_value = 0;
//-->
</script>
<script type="text/javascript" src="http://www.googleadservices.com/pagead/conversion.js">
</script>
<noscript>
<div style="display:inline;">
<img height="1" width="1" style="border-style:none;" alt="" src="http://www.googleadservices.com/pagead/conversion/XXXXXXXXXX/?label=XXXXXXXXXXXXXXXXXXX&amp;guid=ON&amp;script=0"/>
</div>
</noscript>";

4 个答案:

答案 0 :(得分:3)

假设您使用的是PHP 5.3+,只需使用NOWDOC并且不会进行任何解析,因此您无需逃避任何操作:

echo <<<'ENDMARKER'
<!-- Google Code for Homepage Form Submit Conversion Page -->
<script type="text/javascript">
<!--
var google_conversion_id = XXXXXXXXXX;
var google_conversion_language = "en";
var google_conversion_format = "3";
var google_conversion_color = "ffffff";
var google_conversion_label = "XXXXXXXXXXXXXXX";
var google_conversion_value = 0;
//-->
</script>
<script type="text/javascript" src="http://www.googleadservices.com/pagead/conversion.js">
</script>
<noscript>
<div style="display:inline;">
<img height="1" width="1" style="border-style:none;" alt="" src="http://www.googleadservices.com/pagead/conversion/XXXXXXXXXX/?label=XXXXXXXXXXXXXXXXXXX&amp;guid=ON&amp;script=0"/>
</div>
</noscript>
ENDMARKER;

答案 1 :(得分:3)

只需使用单引号。

echo '<!-- Google Code for Homepage Form Submit Conversion Page -->
<script type="text/javascript">
<!--
var google_conversion_id = XXXXXXXXXX;
var google_conversion_language = "en";
var google_conversion_format = "3";
var google_conversion_color = "ffffff";
var google_conversion_label = "XXXXXXXXXXXXXXX";
var google_conversion_value = 0;
//-->
</script>
<script type="text/javascript" src="http://www.googleadservices.com/pagead/conversion.js">
</script>
<noscript>
<div style="display:inline;">
<img height="1" width="1" style="border-style:none;" alt="" src="http://www.googleadservices.com/pagead/conversion/XXXXXXXXXX/?label=XXXXXXXXXXXXXXXXXXX&amp;guid=ON&amp;script=0"/>
</div>
</noscript>'

关:单引号比双引号快几倍,而且几个我的意思是很多。

答案 2 :(得分:1)

也许刚刚突破php?通过这种方式,您还可以尽可能清晰地突出语法。

?>
<!-- Google Code for Homepage Form Submit Conversion Page -->
<script type="text/javascript">
<!--
var google_conversion_id = XXXXXXXXXX;
var google_conversion_language = "en";
var google_conversion_format = "3";
var google_conversion_color = "ffffff";
var google_conversion_label = "XXXXXXXXXXXXXXX";
var google_conversion_value = 0;
//-->
</script>
<script type="text/javascript" src="http://www.googleadservices.com/pagead/conversion.js">
</script>
<noscript>
<div style="display:inline;">
<img height="1" width="1" style="border-style:none;" alt="" src="http://www.googleadservices.com/pagead/conversion/XXXXXXXXXX/?label=XXXXXXXXXXXXXXXXXXX&amp;guid=ON&amp;script=0"/>
</div>
</noscript>
<?php

正如旁注,请记住,您在这里真正缺少的元素是提供某种模板的强大方式。模板使得处理php变得更加清晰,将表示逻辑与业务逻辑分开。我强烈建议至少使用分离的php文件作为模板,如果不是使用完整的模板引擎。

答案 3 :(得分:0)

前一段时间我对同样的问题感到困惑。一般的答案真的不是微不足道的。

我放弃并重写了我的代码以使用json_encode(),它非常容易地对它进行排序。重写也很快。如果我早点想到它,我会为自己节省很多时间。

将对象或数组中的数据打包到JS脚本json_encode()并将其写入。