核心難點:PHP 字串輸出到 JS 時,必須確保產生合法的 JavaScript 語法,特別是引號巢狀與特殊字元跳脫。
<script> var t = <?php echo $str; ?>; // 若 $str = "hello",輸出變成 var t = hello; → ReferenceError: hello is not defined </script>
<?php $jsStr = '"' . addslashes($phpStr) . '"'; ?> <script> var t = <?php echo $jsStr; ?>; // $phpStr = "hello" → var t = "hello"; </script>
<?php $jsStr = "'" . addslashes($phpStr) . "'"; ?> <script> var t = <?php echo $jsStr; ?>; // $phpStr = "hello" → var t = 'hello'; </script>
<script>
// json_encode 自動處理:字串加雙引號、跳脫特殊字元、陣列/物件轉 JSON
var t = <?php echo json_encode($phpVar, JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_HEX_AMP); ?>;
// 字串: "hello" → "hello"
// 陣列: [1,2] → [1,2]
// 物件: {"a":1} → {"a":1}
</script>
關鍵旗標:JSON_HEX_TAG 等防止 XSS,確保輸出可安全內嵌在 HTML `