php如何生成二维码_php生成二维码库使用法【二维码】

endroid/qr-code 是生成 PNG 二维码最稳妥的 PHP 第三方库,需启用 GD 扩展,调用 QRCode::create() 后必须 setSiz e、setMargin 并 writeString() 输出,中文需 urlencode 或配置 font_path,SVG 输出须设 image/svg+xml 头。

php如何生成二维码_php生成二维码库使用法【二维码】

endroid/qr-code 生成 PNG 二维码最稳妥

PHP 官方没有内置二维码生成功能,必须依赖第三方库。endroid/qr-code 是目前维护活跃、API 清晰、默认输出 PNG 的首选。它不依赖 GD 扩展(可选使用 imagick),但若用默认驱动,需确保 gd 已启用:

php -m | grep gd

若无输出,需在 php.ini 中取消 ;extension=gd 的注释并重启 Web 服务。

QRCode::create() 基本调用不能少这三步

生成一个可用二维码,核心是创建实例 → 设置尺寸与内容 → 输出或保存。漏掉任意一步都会报错或返回空白:

  • QRCode::create() 必须传入字符串内容,空字符串或 null 会抛出 InvalidArgumentException
  • ->writeString() 返回的是原始 PNG 二进制数据,不是 Base64;若直接 echo,需先设置 header('Content-Type: image/png')
  • ->saveToFile() 要求目标目录有写权限,且父目录必须存在,否则抛出 RuntimeException
$qrcode = QRCode::create('https://example.com')
    ->setSize(300)
    ->setMargin(10);
header('Content-Type: image/png');
echo $qrcode->writeString();

中文内容乱码?关键是编码和字体双处理

直接传入中文字符串(如 '你好')默认会失败或显示方块,因为 endroid/qr-code 默认只支持 ASCII。解决方法不是改字符集,而是启用「带 logo 或文本的复合二维码」模式,并显式指定中文字体:

JTBC网站内容管理系统5.0.3.1

JTBC网站内容管理系统5.0.3.1

JTBC CMS(5.0) 是一款基于PHP和MySQL的内容管理系统原生全栈开发框架,开源协议为AGPLv3,没有任何附加条款。系统可以通过命令行一键安装,源码方面不基于任何第三方框架,不使用任何脚手架,仅依赖一些常见的第三方类库如图表组件等,您只需要了解最基本的前端知识就能很敏捷的进行二次开发,同时我们对于常见的前端功能做了Web Component方式的封装,即便是您仅了解HTML/CSS也

下载

  • 必须使用 WriterStyle::create()->setLogoPath()->setForegroundColour() 等扩展写法时,才触发字体加载逻辑
  • 实际生效的路径是 ->setWriterOptions(['font_path' => '/path/to/simhei.ttf']),字体文件需为 TrueType 格式(.ttf),且 PHP 进程有读取权限
  • 若仅需扫码识别中文内容(非显示中文),应先 urlencode() 再传入,如 QRCode::create(rawurlencode('你好')),扫码后客户端自行解码

生成 SVG 二维码要注意 MIME 类型和浏览器兼容性

QrCode::create(...)->setWriter(new SvgWriter()) 可输出矢量格式,但不能直接用 writeString() 返回 HTML 片段 —— 它返回的是纯 XML 字符串,缺少 声明和命名空间,部分浏览器(如旧版 Safari)会拒绝渲染:

立即学习PHP免费学习笔记(深入)”;

  • 务必手动添加响应头:header('Content-Type: image/svg+xml')
  • 不要嵌入到 HTML 中再用 https://www.php.cn/faq/1996286.html

发表回复

Your email address will not be published. Required fields are marked *