You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PHP中正确嵌入生成的SVG二维码代码?

问题描述

我通过PHP生成SVG二维码,generate-svg.php代码如下:

<?
include("../qrcode/qrlib.php");
QRcode::svg('Example');
?>

在浏览器中查看该文件的输出,能看到完整的SVG结构,但我希望将这段SVG代码直接嵌入到另一个PHP文件(比如svg.php)中,而非用<object>标签引入。尝试用file_get_contents('generate-svg.php')时,得到的却是PHP源码而非生成的SVG代码:

<!--?
include("../qrcode/qrlib.php");
QRcode::svg('Example');
?-->
<html><head></head><body></body></html>
解决方法

方法1:直接在目标文件中生成SVG字符串并输出

QRcode的svg()方法支持返回SVG内容而非直接输出,只需将第二个参数设为false。在svg.php中直接调用:

<?php
include("../qrcode/qrlib.php");
// 第二个参数设为false,获取SVG字符串
$svgContent = QRcode::svg('Example', false);
// 直接嵌入SVG代码到页面中
echo $svgContent;
?>

方法2:用输出缓冲捕获generate-svg.php的执行结果

如果不想修改generate-svg.php,可以在svg.php中用输出缓冲机制捕获其执行后的输出:

<?php
// 开启输出缓冲
ob_start();
// 执行generate-svg.php,此时它的输出会被缓冲
include('generate-svg.php');
// 获取缓冲内容并关闭缓冲
$svgContent = ob_get_clean();
// 输出SVG代码
echo $svgContent;
?>

方法3:修改generate-svg.php返回SVG内容

调整generate-svg.php,让它返回SVG字符串而非直接输出,后续可更灵活调用:

<?php
include("../qrcode/qrlib.php");
// 生成SVG字符串并返回
return QRcode::svg('Example', false);
?>

然后在svg.php中:

<?php
// 获取generate-svg.php返回的SVG内容
$svgContent = include('generate-svg.php');
echo $svgContent;
?>

注意:file_get_contents只能读取文件的原始源码,不会执行PHP代码,因此无法直接用它获取生成后的SVG内容。必须通过执行PHP脚本(include/require)、输出缓冲,或通过curl访问文件的URL路径(而非本地文件路径)来获取执行后的输出。

内容的提问来源于stack exchange,提问作者Vlad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 15:45:23