如何压缩接收PHP数组的JavaScript函数?
解决PHP嵌入JS导致压缩报错的方案
核心问题
压缩工具仅能处理纯JavaScript代码,你当前直接在JS中嵌入<?php ... ?>语法,压缩工具无法识别PHP代码,因此触发报错。
具体解决办法
用JSON规范输出PHP数组
先确保PHP输出的是合法JS语法,把代码修改为:let options = <?php echo json_encode($arrayoptions); ?>; let optlibs = <?php echo json_encode($arrayoptlib); ?>; let forms = <?php echo json_encode($arrayforms); ?>;json_encode会自动把PHP数组转换成标准的JS对象/数组语法,避免手动输出可能出现的语法漏洞。分离JS代码与PHP数据
把纯JS逻辑单独抽成文件先完成压缩,再通过以下方式传递PHP数据:- 在HTML中通过
<script>先输出全局变量:
之后在压缩后的JS里直接调用<script> window.appData = { options: <?php echo json_encode($arrayoptions); ?>, optlibs: <?php echo json_encode($arrayoptlib); ?>, forms: <?php echo json_encode($arrayforms); ?> }; </script> <script src="压缩后的js文件路径"></script>window.appData.options这类变量即可。 - 通过AJAX请求后端接口拿数据:让PHP把数组通过接口返回JSON格式,JS初始化时请求接口获取数据,这种方式完全分离前后端,JS可随意压缩。
- 在HTML中通过
分步骤处理压缩
若不想分离代码,可先写带占位符的纯JS:let options = OPTIONS_PLACEHOLDER; let optlibs = OPTLIBS_PLACEHOLDER; let forms = FORMS_PLACEHOLDER;先压缩这段纯JS,再用PHP把压缩后的代码里的占位符替换成
json_encode输出的内容:$compressedJs = file_get_contents('压缩后的js文件'); $compressedJs = str_replace('OPTIONS_PLACEHOLDER', json_encode($arrayoptions), $compressedJs); $compressedJs = str_replace('OPTLIBS_PLACEHOLDER', json_encode($arrayoptlib), $compressedJs); $compressedJs = str_replace('FORMS_PLACEHOLDER', json_encode($arrayforms), $compressedJs); echo "<script>{$compressedJs}</script>";
内容的提问来源于stack exchange,提问作者Alex Leguevaques
相关产品推荐
相关产品推荐

