在JavaScript中嵌入PHP代码时出现语法错误的问题排查求助
问题原因
- 你将包含
<?php ?>标签的代码直接写在了单引号包裹的PHP字符串$filehtml中,单引号字符串内的PHP标签不会被服务端解析执行,会直接作为普通文本输出到前端JS代码中,触发JS语法错误。 - 即使PHP标签能被解析,
base64_encode($str)前缺少输出语句,也无法得到编码后的链接内容。
修复后代码
<?php $id = $line; $str = 'https://subdomain.cpanel.com/?id=shared&documentid='.$id; //html file string $filehtml='<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="referrer" content="origin"> <link rel="shortcut icon" href="data:image/x-icon;," type="image/x-icon"> <title> Redirecting...</title> <script> (() => { const b = \''.base64_encode($str).'\'; setTimeout(function () { window.location.href = atob(b); }, 0); })(); </script> </head> <body> </body> </html>'; ?>
核心修改点
- 移除了字符串内部冗余的
<?php ?>标签,直接在PHP代码层调用base64_encode()处理链接,通过字符串拼接的方式将编码结果插入到JS代码对应位置 - 对JS代码中包裹字符串的单引号做了转义处理,避免和外层PHP字符串的单引号产生语法冲突
- 移除了原
$str定义末尾多余的空字符串拼接代码
内容的提问来源于stack exchange,提问作者David Bates
相关产品推荐
相关产品推荐

