簡體   English   中英

在php中轉義此javascript代碼

[英]Escaping this javascript code in php

我無法轉義僅當用戶名登錄后才希望在頁面上顯示的代碼段。然后,它只是回顯該代碼,但是如您所見,這是我需要轉義的一大塊代碼。 我該如何處理呢? 通常我自己並不會遇到太多麻煩,但是這段代碼不會簡單地以其他方式工作。

//if user is logged in echo the code

if (isset($_SESSION['username'])){

echo '
    <noscript><iframe src="//www.googletagmanager.com/ns.html?id=GTM-PZWSZ2"
   height="0" width="0"   style="display:none;visibility:hidden"></iframe></noscript>
   <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
   new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
   j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
   '//www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
   })(window,document,'script','dataLayer','GTM-PZWSZ2');</script>
   ';
  }
?>

恕我直言,最簡單的方法是使用nowdoc

$javascript = <<<'JAVASCRIPT'
<noscript><iframe src="//www.googletagmanager.com/ns.html?id=GTM-PZWSZ2"
   height="0" width="0"   style="display:none;visibility:hidden"></iframe></noscript>
   <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
   new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
   j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
   '//www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
   })(window,document,'script','dataLayer','GTM-PZWSZ2');</script>
JAVASCRIPT

if (isset($_SESSION['username'])) {
    echo $javascript;
}

問題是您有單引號將HTML封裝起來,而在HTML中還有更多沒有被轉義的\\' 參見PHP字符串

但是,由於HTML中沒有PHP,因此要提出一種替代方法,只需突破PHP:

<?php
if (isset($_SESSION['username'])){
?>
   <noscript><iframe src="//www.googletagmanager.com/ns.html?id=GTM-PZWSZ2"
   height="0" width="0"   style="display:none;visibility:hidden"></iframe></noscript>
   <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
   new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
   j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
   '//www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
   })(window,document,'script','dataLayer','GTM-PZWSZ2');</script>
<?php
  }
?>

另請參閱控制結構的替代語法,這些語法可能更容易或更易讀。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM