从PHP回应javascript

时间:2011-06-07 18:53:54

标签: php javascript variables echo quotes

我试图回应PHP中的一些谷歌分析JavaScript代码,以便根据具体情况有条件地阅读。因为代码包含/ * * /字符,所以我很难在引号周围缠头。我正在寻找将这种类型的文本分配给php变量的方向。

由于

$sJS .='<script type="text/javascript">';
$sJS .='/* <![CDATA[ */"';
$sJS .='var google_conversion_language = "en";';
$sJS .='var google_conversion_format = "2";';
$sJS .='var google_conversion_color = "ffffff";';
$sJS .='var google_conversion_value = 0;';
$sJS .='/* ]]> */';
$sJS .='</script>';
$sJS .='<script type="text/javascript" src="http://www.googleadservices.com/page.js">';
$sJS .='</script>';
$sJS .='<noscript>';
$sJS .='<div style="display:inline;">';
$sJS .='<img height="1" width="1" style="border-style:none;" alt="" src="http://www.googleadservices.com/pagead/conversion/997410413/?value=1.00&amp;label=ffr456dj5QIQ7YzN2wM&amp;guid=ON&amp;script=0"/>';
$sJS .='</div>';
$sJS .='</noscript>';

6 个答案:

答案 0 :(得分:3)

echo <<< EOD

    your html here

EOD;

答案 1 :(得分:2)

它喜欢将heredoc syntax用于那种东西。

让你的js单独包含heredoc变量,它会更加清晰。

答案 2 :(得分:1)

出了什么问题:

<?php
$JS='
<script type="text/javascript">
/* <![CDATA[ */"
var google_conversion_language = "en";
var google_conversion_format = "2";
var google_conversion_color = "ffffff";
var google_conversion_value = 0;
/* ]]> */
</script>
<script type="text/javascript" src="http://www.googleadservices.com/page.js">
</script>
<noscript>
<div style="display:inline;">
<img height="1" width="1" style="border-style:none;" alt="" src="http://www.googleadservices.com/pagead/conversion/997410413/?value=1.00&amp;label=ffr456dj5QIQ7YzN2wM&amp;guid=ON&amp;script=0"/>
</div>
</noscript>';

答案 3 :(得分:1)

嗯,你没有确切地说什么不起作用。引用的/*不应被视为评论。如果这不能满足您的期望,您的代码中的其他地方可能会出现不匹配的引号。我一眼就看出来了:

$sJS .='/* <![CDATA[ */"';

看起来你最后有"然后是'。您可能不需要"

答案 4 :(得分:1)

您不需要像这样逐行执行... PHP支持继续下一行。这很好用:

$sJS = '<script type="text/javascript">
    /* <![CDATA[ */
    var google_conversion_language = "en";
    var google_conversion_format = "2";
    var google_conversion_color = "ffffff";
    var google_conversion_value = 0;
    /* ]]> */
    </script>
    <script type="text/javascript" src="http://www.googleadservices.com/page.js">
    </script>
    <noscript>
    <div style="display:inline;">
    <img height="1" width="1" style="border-style:none;" alt="" src="http://www.googleadservices.com/pagead/conversion/997410413/?value=1.00&amp;label=ffr456dj5QIQ7YzN2wM&amp;guid=ON&amp;script=0"/>
    </div>
    </noscript>';

您的字符串以单引号引用,其中没有单引号,并且没有反斜杠或转义序列。

http://gfosco.kodingen.com/phpjs.php

显着工作(如果您查看来源)

答案 5 :(得分:1)

您可以使用HeredocNowdoc语法来更轻松地完成此操作。

Nowdoc(在php&gt; 5.3中)将解析变量(类似于单引号)

Heredoc解决方案:

echo <<< EOD

<script type="text/javascript">
/* <![CDATA[ */"
var google_conversion_language = "en";
var google_conversion_format = "2";
var google_conversion_color = "ffffff";
var google_conversion_value = 0;
/* ]]> */
</script>
<script type="text/javascript" src="http://www.googleadservices.com/page.js">
</script>
<noscript>
<div style="display:inline;">
<img height="1" width="1" style="border-style:none;" alt="" src="http://www.googleadservices.com/pagead/conversion/997410413/?value=1.00&amp;label=ffr456dj5QIQ7YzN2wM&amp;guid=ON&amp;script=0"/>
</div>
</noscript>

EOD;

对于nowdoc,唯一的区别是将EOT用于单引号('EOT'):

echo <<<'EOT'
...
EOT;