PHP生成二维码(使用PHP QR Code二维码生成类库)

 更新时间:2016年11月25日 17:22  点击:1779
PHP生成二维码例子我们使用到了PHP QR Code类库来生成了,有了它我们生成二维码就像echo a这么简单听,下面来给各位介绍一下吧,希望对各位会带来帮助哦。

以前使用Google提供了较为完善的二维码生成接口,调用API接口很简单,但是现在由于访问google出现问题,需要使用其他的方法生成二维码。

PHP QR Code是一个PHP二维码生成类库,利用它可以轻松生成二维码,官网提供了下载和多个演示demo,

官网地址:http://phpqrcode.sourceforge.net

下载官网提供的类库后,只需要使用phpqrcode.php就可以生成二维码了,当然您的PHP环境必须开启支持GD2。 ‘’

qrlib.php 是完整版,官方的调用实例:

 代码如下 复制代码

QRcode::png('code data text', 'filename.png'); // creates file

QRcode::png('some othertext 1234'); // creates code image and outputs it directly into browser

phpqrcode.php 是合并版,只有一个文件,但生成速度较慢且不太准确。使用方法:

phpqrcode.php提供了一个关键的png()方法。

 代码如下 复制代码

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);
} 参数$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表示二维码周围边框空白区域间距值,默认是4;参数$saveandprint表示是否保存二维码并显示,默认是不保存显示。

include 'phpqrcode.php';
QRcode::png('http://mingzi.111cn.net'); 上面这段代码就输出了这张二维图

 那么实际应用中,我们会在二维码的中间加上自己的LOGO,已增强宣传效果。先使用PHP QR Code生成一张二维码图片,然后再利用php的image相关函数,将事先准备好的logo图片加入到刚生成的原始二维码图片中间,然后重新生成一张新的二维码图片。当然这个时候选择容错率H比较好。

 代码如下 复制代码
<?php
include 'phpqrcode.php'; 
$value = 'http://www.111cn.net'; //二维码内容
$qr_eclevel = 'H';//容错级别
$picsize = 6;//生成图片大小
QRcode::png($value, 'qrcode.png', $qr_eclevel, $picsize);//生成二维码图片
$logo = 'logo.png';//准备好的logo图片
$QR = 'qrcode.png';//已经生成的原始二维码图
 
if ($logo !== FALSE) {
    $QR = imagecreatefromstring(file_get_contents($QR));
    $logo = imagecreatefromstring(file_get_contents($logo));
    $QR_width = imagesx($QR);//二维码图片宽度
    $QR_height = imagesy($QR);//二维码图片高度
    $logo_width = imagesx($logo);//logo图片宽度
    $logo_height = imagesy($logo);//logo图片高度
    $logo_qr_width = $QR_width / 5;
    $scale = $logo_width/$logo_qr_width;
    $logo_qr_height = $logo_height/$scale;
    $from_width = ($QR_width - $logo_qr_width) / 2;
    //重新组合图片并调整大小
    imagecopyresampled($QR, $logo, $from_width, $from_width, 0, 0, $logo_qr_width, 
    $logo_qr_height, $logo_width, $logo_height);
}
//输出图片
imagepng($QR, 'myxzy.png');
echo '<img src="myxzy.png">';
?>

好了这样就生成了我们要的二维码图片了,今天由于时间有限就不介绍了,下次介绍一个利用它生成网址 wap版的地址哦。

判断用户浏览器类型我们只要使用php中的 $_SERVER["HTTP_USER_AGENT"]就可以获取到了,但这样获取到的是非常原始的数据,我们要判断类型需要加上一段strpos($_SERVER['HTTP_USER_AGENT'],"MicroMessenger "就可以了,具体步骤如下图所示。

PHP方法:利用PHP的“_SERVER ”数组“HTTP_USER_AGENT”项,获取该页面的用户代理的信息,来完成这个工作。

 代码如下 复制代码

<?php
echo $_SERVER["HTTP_USER_AGENT"];

?>

【winows/chrome】 输出结果:

Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.69 Safari/537.36
而【ios7/weixin】

下输出结果:

Mozilla/5.0 (iPhone; CPU iPhone OS 7_0_4 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Mobile/11B554a MicroMessenger/5.0.3

在字符串中可以看出“MicroMessenger ”为微信浏览器版本,所以可以使用“MicroMessenger”参数,来判断访问来源是否为“微信浏览器”。

 代码如下 复制代码

if(strpos($_SERVER['HTTP_USER_AGENT'],"MicroMessenger "))

{

    echo "Hello Weixin";

}

Javascript方法:

function isweixin(){

    var ua = navigator.userAgent.toLowerCase();

    if(ua.match(/MicroMessenger/i)=="micromessenger") {

        return true;

    } else {

        return false;
    }

}

今天看到两行代码就可以删除指定目录下的所有文件与目录了这个非常的简单,有需要的朋友可进入参考一下

例子

 代码如下 复制代码

<?php
 
 //删除目录下所有空目录
 array_map('rmdir', glob('*', GLOB_ONLYDIR));
 
 //删除目录所有文件
 array_map('unlink', array_filter(glob('*'), 'is_file'));
?>

原理分析

array_map('rmdir', glob('*', GLOB_ONLYDIR));

删除简单是使用了array_map函数,它的作用是返回用户自定义函数作用后的数组。回调函数接受的参数数目应该和传递给 array_map() 函数的数组数目一致

而glob是遍历目录,然后把返回数组给了rmdir进行目录删除,然后

array_map('unlink', array_filter(glob('*'), 'is_file'));

原理差不多了,就是遍历目录之后我们再删除指定目录中的文件即可。

检测返回的数据是不是json格式的数据我们可以使用几个方法来判断,下面我整理了一些比较实用的检测json字符串是不是json格式的例子,希望例子能帮助各位带来帮助哦。

首先要记住json_encode返回的是字符串, 而json_decode返回的是对象.

判断数据不是JSON格式:

 代码如下 复制代码

function is_not_json($str){
    return is_null(json_decode($str));
}


判断数据是合法的json数据: (PHP版本大于5.3)

 代码如下 复制代码
function is_json($string) {
 json_decode($string);
 return (json_last_error() == JSON_ERROR_NONE);
}
json_last_error()函数返回数据编解码过程中发生的错误.

注意: json编解码所操作字符串必须是UTF8的.

如果不是json则返回false

 代码如下 复制代码


/**
* 解析json串
* @param type $json_str
* @return type
*/
private function analyJson($json_str) {
$json_str = str_replace('\\', '', $json_str);
$out_arr = array();
preg_match('/\{.*\}/', $json_str, $out_arr);
if (!empty($out_arr)) {
$result = json_decode($out_arr[0], TRUE);
} else {
return FALSE;
}
return $result;
}

上面的几种方法都可以检测来是不是json数据,当然我还有一个另类的做法就是使用ajax来实现,例子如下

使用 AJAX 请求来获得 JSON 数据,并输出结果:

 代码如下 复制代码

$.getJSON("test.js", function(json){
  alert("JSON Data: " + json.users[3].name);
});

如果返回的值不正确就是不合法的json字符串了,是不是这样也可以呀。

微信公众平台的接口开发是一个现在比较常用的功能了,很多的人都会去了解一下微信公众平台一些简单开发应用了,下面我来给大家介绍一篇入门级别的例子。

这段时间都在忙于微信公众号平台来发,现在已经接近尾声了,所以对于微信开发平台的接口如何使用,在这里也唠刀一两句。

微信平台的开发并不像你想像的那么难,无非就是数据的存取处理罢了。对于数据的存取,简单如留言板,存数据,我们通过表单向数据库提交数据以存入;取数据,通过查询语句从数据库取得。对于数据的存取,微信公众平台开放了各式各样的接口以满足不同类型的数据存取,这样,我们就可以通过接口间接地向微信公众平台的数据库存取数据了。

先来看一个创建菜单的接口
 https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN

这个接口目前需要服务号才有权限,但是没有服务号的可以申请一个测试号(有限期一年)来测试。接口中的ACCESS_TOKEN是通过公众号(服务号或测试号)的AppID和AppSecret来获取,每个可以存取数据的接口都需要ACCESS_TOKEN。

接口是有了,但是怎么使用它来存取微信公众平台的数据呢?可以使用下面这个函数来调用:

 代码如下 复制代码
function https_request($url,$data = null){
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
    if (!empty($data)){
        curl_setopt($curl, CURLOPT_POST, 1);
        curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
    }
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    $output = curl_exec($curl);
    curl_close($curl);
    return $output;
}

说明:这是一个php函数,$url是微信公众号的接口,$data是一个json格式的数据

使用方法:
取数据:https_request($url);
存数据:https_request($url,$data);

小结:在取数据时,https_request函数返回的是json格式的数据。存数据之前,如果$data不是json格式的,需要转化为json数据。

[!--infotagslink--]

相关文章

  • php生成二维码中文乱码问题解决方法

    最近做了个扫描二维码得到vcard的项目,遇到一个问题,有一部分生成完的二维码,用android系统手机扫描后得到的vcard中的中文姓名是乱码,经过比对发现,这部分vcard中ORG这个...2016-11-25
  • php二维码生成

    本文介绍两种使用 php 生成二维码的方法。 (1)利用google生成二维码的开放接口,代码如下: /** * google api 二维码生成【QRcode可以存储最多4296个字母数字类型的任意文本,具体可以查看二维码数据格式】 * @param strin...2015-10-21
  • Java生成随机姓名、性别和年龄的实现示例

    这篇文章主要介绍了Java生成随机姓名、性别和年龄的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-10-01
  • C#生成随机数功能示例

    这篇文章主要介绍了C#生成随机数功能,涉及C#数学运算与字符串操作相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • 微信小程序二维码生成工具 weapp-qrcode详解

    这篇文章主要介绍了微信小程序 二维码生成工具 weapp-qrcode详解,教大家如何在项目中引入weapp-qrcode.js文件,通过实例代码给大家介绍的非常详细,需要的朋友可以参考下...2021-10-23
  • jQuery为动态生成的select元素添加事件的方法

    下面小编就为大家带来一篇jQuery为动态生成的select元素添加事件的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2016-09-01
  • php生成唯一数字id的方法汇总

    关于生成唯一数字ID的问题,是不是需要使用rand生成一个随机数,然后去数据库查询是否有这个数呢?感觉这样的话有点费时间,有没有其他方法呢?当然不是,其实有两种方法可以解决。 1. 如果你只用php而不用数据库的话,那时间戳+随...2015-11-24
  • PHP自动生成后台导航网址的最佳方法

    经常制作开发不同的网站的后台,写过很多种不同的后台导航写法。 最终积累了这种最写法,算是最好的吧...2013-09-29
  • js生成随机数的方法实例

    js生成随机数主要用到了内置的Math对象的random()方法。用法如:Math.random()。它返回的是一个 0 ~ 1 之间的随机数。有了这么一个方法,那生成任意随机数就好理解了。比如实际中我们可能会有如下的需要: (1)生成一个 0 - 1...2015-10-21
  • .NET C#利用ZXing生成、识别二维码/条形码

    ZXing是一个开放源码的,用Java实现的多种格式的1D/2D条码图像处理库,它包含了联系到其他语言的端口。这篇文章主要给大家介绍了.NET C#利用ZXing生成、识别二维码/条形码的方法,文中给出了详细的示例代码,有需要的朋友们可以参考借鉴。...2020-06-25
  • 浅谈js二维码扫码登录是什么原理

    这篇文章主要介绍了浅谈js二维码扫码登录是什么原理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-04-13
  • 微信开发生成带参数的二维码的讲解

    在微信公众号平台开发者那里,在“账号管理”那里,有一项功能是“生成带参数的二维码”,通过这儿生成的二维码,只要通过微信扫一扫之后,会把事件自动推送到微...2016-05-19
  • PHP验证码生成与验证例子

    验证码是一个现在WEB2.0中常见的一个功能了,像注册、登录又或者是留言页面,都需要注册码来验证当前操作者的合法性,我们会看到有些网站没有验证码,但那是更高级的验证了,...2016-11-25
  • PHP生成不同颜色、不同大小的tag标签函数

    复制代码 代码如下:function getTagStyle(){ $minFontSize=8; //最小字体大小,可根据需要自行更改 $maxFontSize=18; //最大字体大小,可根据需要自行更改 return 'font-size:'.($minFontSize+lcg_value()*(abs($maxFo...2013-10-04
  • C#利用QrCode.Net生成二维码(Qr码)的方法

    QrCode.Net是一个使用C#编写的用于生成二维码图片的类库,使用它可以非常方便的为WinForm、WebForm、WPF、Silverlight和Windows Phone 7应用程序提供二维码编码输出功能。可以将二维码文件导出为eps格式...2020-06-25
  • php中利用str_pad函数生成数字递增形式的产品编号

    解决办法:$str=”QB”.str_pad(($maxid[0]["max(id)"]+1),5,”0″,STR_PAD_LEFT ); 其中$maxid[0]["max(id)"]+1) 是利用max函数从数据库中找也ID最大的一个值, ID为主键,不会重复。 str_pad() 函数把字符串填充为指...2013-10-04
  • JS生成某个范围的随机数【四种情况详解】

    下面小编就为大家带来一篇JS生成某个范围的随机数【四种情况详解】。小编觉得挺不错的,现在分享给大家,也给大家做个参考,一起跟随小编过来看看吧...2016-04-22
  • C#生成Word文档代码示例

    这篇文章主要介绍了C#生成Word文档代码示例,本文直接给出代码实例,需要的朋友可以参考下...2020-06-25
  • 基于Bootstrap的Metronic框架实现条码和二维码的生成及打印处理操作

    这篇文章主要介绍了基于Bootstrap的Metronic框架实现条码和二维码的生成及打印处理操作的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下...2016-09-01
  • Vue组件文档生成工具库的方法

    本文主要介绍了Vue组件文档生成工具库的方法,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-08-11