随着移动网络的发展,现在很多网站都有二维码显示,以方便手机用户扫描后通过手机浏览当前网址,影子最近一个网站也有此需求,就在网站添加了用PHP QR Code生成当前网址二维码的小功能,下面分享一下。
说明:网上有用js和谷歌api生成二维码的方法,因js浏览器兼容性不好,谷歌api连通率不好,所以影子未采用。
===
PHP QR Code是一个PHP二维码生成类库,利用它可以轻松生成二维码,官网提供了下载和多个演示demo,查看地址:http://phpqrcode.sourceforge.net/。
下载官网提供的类库后,只需要使用phpqrcode.php就可以生成二维码了,当然您的PHP环境必须开启支持GD2。 phpqrcode.php提供了一个关键的png()方法,其中参数$text表示生成二位的的信息文本;参数$outfile表示是否输出二维码图片 文件,默认否;参数$level表示容错率,也就是有被覆盖的区域还能识别,分别是 L(QR_ECLEVEL_L,7%),M(QR_ECLEVEL_M,15%),Q(QR_ECLEVEL_Q,25%),H(QR_ECLEVEL_H,30%); 参数$size表示生成图片大小,默认是3;参数$margin表示二维码周围边框空白区域间距值;参数$saveandprint表示是否保存二维码并 显示。
. 代码如下:
public static function png($text, $outfile=false, $level=QR_ECLEVEL_L, $size=3, $margin=4, $saveandprint=false)
{
$enc = QRencode::factory($level, $size, $margin);
return $enc->encodePNG($text, $outfile, $saveandprint=false);
}
调用PHP QR Code非常简单,如下代码即可生成一张内容为"http://www.8119.org/html/123/"的二维码.
include 'phpqrcode.php';
QRcode::png('http://www.8119.org/html/123/');
===
此段话引用自http://www.cnblogs.com/txw1958/p/phpqrcode.html,以方便大家理解我下面的代码。
下面贴出来用PHP QR Code生成当前网址二维码的代码。
< ?php
include "qrcode/qrcode.php";
$url = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING'];
$burl = strstr( $url,'qr.php');
$qurl = strstr( strstr( $url, '?url='), 'http');
if ($burl !== "qr.php?" and strpos($burl,'?url=http://') !== false) {
$value=$qurl;
}
else {
$value = "http://blog.menglei.net/";
}
$errorCorrectionLevel = "L";
$matrixPointSize = "8";
$margin="1";
QRcode::png($value, false, $errorCorrectionLevel, $matrixPointSize,$margin);
echo $burl;
exit;
?>
保存为qr.php文件,此段代码是先获取链接网址,然后通过网址进行处理,获取对应的。
使用方法:
在需调用的网页或模板中添加类似以下代码即可:
其中?url=后面的网址即是当前网址,根据不用的程序,自行调用即可。
如果是直接获致当前网址进行二维码生成,则可以使用以下代码。
< ?php
include “phpqrcode/phpqrcode.php”;
$value = ‘http://’.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'].’?’.$_SERVER['QUERY_STRING'];
$errorCorrectionLevel = “L”;
$matrixPointSize = “8″;
$margin=”1″;
QRcode::png($value, false, $errorCorrectionLevel, $matrixPointSize,$margin);
exit;
?>
这段代码仅支持php文件,请知悉。
也可以使用以下js代码来实现
以上即是用PHP QR Code生成当前网址二维码的全部内容,如有疑问,请留言或咨询QQ925474725