[英]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.