PHP SimpleQrCode支持字符串拼接吗?变量生成二维码失败求助
解决Simple QrCode在Blade模板中生成动态二维码失败的问题
问题出在你在Blade的{!! !!}标签里嵌套了原生PHP的<?php echo ?>代码——Blade模板不会解析{!! !!}内部的原生PHP标记,导致生成的二维码内容不是预期的坐标URL,而是包含<?php echo doubleval(round($_GET['st_y'],2)); ?>这类字符串的无效URL,自然无法正常显示二维码。
正确的写法示例
你可以先把URL参数提取为PHP变量,再传入QrCode生成方法:
<?php // 在qrcode.blade.php开头先处理参数 $lat = round($_GET['st_y'], 2); $lng = round($_GET['st_x'], 2); ?>
然后生成二维码:
{!! QrCode::size(300)->generate("https://someurl.net/?lat={$lat}&lng={$lng}&zoom=17") !!}
或者用Laravel更规范的请求辅助函数,直接在Blade里处理:
{!! QrCode::size(300)->generate("https://someurl.net/?lat=" . round(request('st_y'), 2) . "&lng=" . round(request('st_x'), 2) . "&zoom=17") !!}
关于你提到的“复制输出后能运行”的原因
你复制的应该是页面最终渲染后正确的URL内容(比如查看页面源代码时,原生PHP代码已经被服务器执行,显示出了实际的坐标值),用这个正确的URL去生成二维码自然没问题——但原来的模板代码因为嵌套写法错误,导致QrCode生成时拿到的是未解析的PHP代码字符串,而非实际坐标。
内容的提问来源于stack exchange,提问作者trideset3
相关产品推荐
相关产品推荐

