php判断用户浏览器类型是否为微信浏览器

 更新时间:2016年11月25日 17:22  点击:2061
判断用户浏览器类型我们只要使用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;
    }

}

输出json格式的数据是非常的简单,如果我们希望输入的json数据非常的整洁漂亮有格式我们要怎么来处理呢?下面一聚教程小编就为各位介绍一下吧,希望例子能帮助到各位同学哦。

php直接输出json格式

php直接输出json格式,很多新手有一个误区,以为用echo json_encode($data);这样就是输出json数据了,没错这样输出文本是json格式文本而不是json数据,正确的写法是应该加一句:

 代码如下 复制代码
<?php
 
header('Content-type:text/json');     //这句是重点,它告诉接收数据的对象此页面输出的是json数据;
$json={"name":"yovae","password":"12345"};    //虽然这行数据形式上是json格式,如果没有上面那句的话,它是不会被当做json格式的数据被处理的;
echo $json;
?>



例子

JSON 数据格式化函数

将字符串形式的 JSON 数据格式化为缩进形式。通常使用 json_encode 转换出来的 JSON 串没有缩进,有这个方法就爽多了。
这里我默认使用了 tab 缩进,如果要改成空格,替换变量 $indentStr 即可。

 代码如下 复制代码
/**
 * Indents a flat JSON string to make it more human-readable.
 * @param string $json The original JSON string to process.
 * @return string Indented version of the original JSON string.
 */
function indent ($json) {

$result = '';
$pos = 0;
$strLen = strlen($json);
$indentStr = '';
$newLine = "\n";
$prevChar = '';
$outOfQuotes = true;

for ($i=0; $i<=$strLen; $i++) {

// Grab the next character in the string.
$char = substr($json, $i, 1);
// Are we inside a quoted string?
if ($char == '"' && $prevChar != '\\') {
$outOfQuotes = !$outOfQuotes;
// If this character is the end of an element,
// output a new line and indent the next line.
} else if(($char == '}' || $char == ']') && $outOfQuotes) {
$result .= $newLine;
$pos --;
for ($j=0; $j<$pos; $j++) {
$result .= $indentStr;
}
}
// Add the character to the result string.
$result .= $char;
// If the last character was the beginning of an element,
// output a new line and indent the next line.
if (($char == ',' || $char == '{' || $char == '[') && $outOfQuotes) {
$result .= $newLine;
if ($char == '{' || $char == '[') {
$pos ++;
}
for ($j = 0; $j < $pos; $j++) {
$result .= $indentStr;
}
}
$prevChar = $char;
}

return $result;

}



好了这样输出的的json数据库非常漂亮格式化的形式了哦,在这里我就不给例子了哦,大家不防进入参考一下吧。

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
 
 //删除目录下所有空目录
 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字符串了,是不是这样也可以呀。

[!--infotagslink--]

相关文章

  • JavaScript判断浏览器及其版本信息

    本篇文章主要分享了通过window.navigator来判断浏览器及其版本信息的实例代码。具有一定的参考价值,下面跟着小编一起来看下吧...2017-01-23
  • js实现浏览器打印功能的示例代码

    这篇文章主要介绍了js如何实现浏览器打印功能,文中示例代码非常详细,帮助大家更好的理解和学习,感兴趣的朋友可以了解下...2020-07-15
  • js识别uc浏览器的代码

    其实挺简单的就是if(navigator.userAgent.indexOf('UCBrowser') > -1) {alert("uc浏览器");}else{//不是uc浏览器执行的操作}如果想测试某个浏览器的特征可以通过如下方法获取JS获取浏览器信息 浏览器代码名称:navigator...2015-11-08
  • js代码判断浏览器种类IE、FF、Opera、Safari、chrome及版本

    第一种,只区分浏览器,不考虑版本 复制代码 代码如下:function myBrowser(){ var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串 var isOpera = userAgent.indexOf("Opera") > -1; if (isOp...2014-05-31
  • 详解Vue Cli浏览器兼容性实践

    这篇文章主要介绍了详解Vue Cli浏览器兼容性实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-06-09
  • 如何使用 JavaScript 操作浏览器历史记录 API

    这篇文章主要介绍了如何使用 JavaScript 操作浏览器历史记录 API,帮助大家更好的理解和使用JavaScript,感兴趣的朋友可以了解下...2020-11-24
  • Python获取浏览器窗口句柄过程解析

    这篇文章主要介绍了Python获取浏览器窗口句柄过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-07-26
  • vue如何调用浏览器分享功能详解

    这篇文章主要给大家介绍了关于vue如何调用浏览器分享的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-20
  • js判断浏览器类型,版本的代码(附多个实例代码)

    在网站前端开发中,浏览器兼容性问题本已让我们手忙脚乱,Chrome的出世不知道又要给我们添多少乱子。浏览器兼容性是前端开发框架要解决的第一个问题,要解决兼容性问题就得首先准确判断出浏览器的类型及其版本。 JavaScrip...2014-05-31
  • JAVA读取文件流,设置浏览器下载或直接预览操作

    这篇文章主要介绍了JAVA读取文件流,设置浏览器下载或直接预览操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-10-09
  • 网页自动调用国内双核浏览器的极速模式的实现方法

    由于国内好几个浏览器都是双核浏览器(蛋痛,做一个浏览器壳就说国产,而且使用率高),有时打开网页会出现不兼容模式,在极速模式下是好的,现在我们来用代码实现网页自动调用国内...2016-09-20
  • C# 模拟浏览器并自动操作的实例代码

    这篇文章主要介绍了C# 模拟浏览器并自动操作的实例代码,文中讲解非常细致,帮助大家更好的理解和学习,感兴趣的朋友可以了解下...2020-11-03
  • Python爬虫之Selenium实现关闭浏览器

    这篇文章主要介绍了Python爬虫之Selenium实现关闭浏览器,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-12-04
  • JS跨浏览器解析XML应用过程详解

    这篇文章主要介绍了JS跨浏览器解析XML应用过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-10-16
  • vue项目中禁用浏览器缓存配置案例

    这篇文章主要介绍了vue项目中禁用浏览器缓存配置案例,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下...2021-09-12
  • 基于jQuery1.9版本如何判断浏览器版本类型

    在jquery.1.9以前的版本,可以使用$.browser很轻松的判断浏览器的类型和版本,但是在1.9中和以后的版本中,$.browser已经被删除,下面就介绍一下如何实现此功能,希望能够给需要的朋友带来帮助...2016-01-14
  • Ajax打开新窗口被浏览器拦截怎么办

    小编推荐的这篇文章介绍了两种Ajax打开新窗口被浏览器拦截的解决方法,有需要的同学可以参考一下 最近在做支付时发现打开支付窗口时被浏览器拦截了,百度了一下才...2017-01-22
  • js根据手机客户端浏览器类型,判断跳转官网/手机网站多个实例代码

    这篇文章主要介绍了js根据手机客户端浏览器类型,判断跳转官网手机网站多个实例代码,需要的朋友可以参考下...2016-05-04
  • echarts使图标能自适应浏览器窗口变化,及经纬度转换

    本文章来为各位一篇关于echarts使图标能自适应浏览器窗口变化,及经纬度转换的例子,希望文章能够帮助到各位同学哦。 1、echarts使图标能自适应浏览器窗口变化 wind...2016-09-20
  • 关于angular浏览器兼容性问题的解决方案

    这篇文章主要给大家介绍了关于angular浏览器兼容性问题的解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者使用angular具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧...2020-07-26