将 JavaScript 代码块插入 PHP 脚本

Inserting a block of JavaScript code into a PHP script

我的一个朋友希望我为他的网站收集一些统计数据,所以我给了他以下代码以插入他的页脚:

<div>
    <script>
       var wandTopSitesUserId;
       match = document.cookie.match(new RegExp("WandTopWildlifeSites" + '=([^;]+)'));
       if (match)
          wandTopSitesUserId = match[1];
       else {
          wandTopSitesUserId = (+new Date * Math.random()).toString(36).slice(2, 12);
          document.cookie = 'WandTopWildlifeSites=' + wandTopSitesUserId + '; expires=Tue, 1 Jan 2030 00:00:00 UTC; path=/';
       }

       document.write('<div style="visibility: hidden;"><a href="http://www.www.fxxxxx.com/"><img src="http://xxxxxx.azurewebsites.net/Log/LogVisit/?siteId=2&userId=' + wandTopSitesUserId + '&pageName=' + location.pathname + '" alt="WAND Top Wildlife Sites" /></a></div>');
    </script>
 </div>

我不知道他在用 PHP 而我对 PHP 完全一无所知。当他试图将我的代码插入他的 PHP 脚本时,他收到以下错误:

string(125) "Smarty error: [in globalcontent:footer line 9]: [plugin] unknown tag - 'wandTopSitesUserId' (core.load_plugins.php, line 198)" string(137) "Smarty error: [in globalcontent:footer line 9]: syntax error: unrecognized tag 'wandTopSitesUserId' (Smarty_Compiler.class.php, line 590)"

对PHP一无所知,我知道如何解决这个问题。

他使用 samrty 模板引擎,需要您通过将其封装在 {literal}...{/literal}:

中来转义 javascript
<div>
    {literal}
    <script>
       var wandTopSitesUserId;
       match = document.cookie.match(new RegExp("WandTopWildlifeSites" + '=([^;]+)'));
       if (match)
          wandTopSitesUserId = match[1];
       else {
          wandTopSitesUserId = (+new Date * Math.random()).toString(36).slice(2, 12);
          document.cookie = 'WandTopWildlifeSites=' + wandTopSitesUserId + '; expires=Tue, 1 Jan 2030 00:00:00 UTC; path=/';
       }

       document.write('<div style="visibility: hidden;"><a href="http://www.www.fxxxxx.com/"><img src="http://xxxxxx.azurewebsites.net/Log/LogVisit/?siteId=2&userId=' + wandTopSitesUserId + '&pageName=' + location.pathname + '" alt="WAND Top Wildlife Sites" /></a></div>');
    </script>
    {/literal}
 </div>