php的json_decode函数无法解析json

作者:matrix 发布时间:2014 年 9 月 4 日 分类:零零星星

phpjson_decode函数用来解析json数据很方便,但是有时候却解析不了。

究其原因找到如下可能性:

1.键名没有用双引号括起来

['name':n,'age',a]
[name:n,age,a]

这两个都不能解析

2.出现多余逗号

['name':n,'age',a,]

###3.有些转义不支持
数据中出现\x26这样的会失败,有时候\'都无法解析。
stripslashes()去掉转义即可!

4.json不支持gbk编码

iconv('GBK', 'UTF-8', $json_data);//使用iconv()函数将GBK转到UTF-8编码

json数据解析前用检测工具测试一下较好:http://www.bejson.com/

150515添加

/* 
 格式化错误的json数据,使其能被json_decode()解析 
 不支持健名有中文、引号、花括号、冒号 
 不支持健指有冒号 
*/  
function format_ErrorJson($data,$quotes_key=false)  
{  
    $con = str_replace('\'','"',$data);//替换单引号为双引号 
    $con = str_replace(array('\\"'),array('<|YH|>'),$con);//替换 
    $con = preg_replace('/(\w+):[ {]?((?<YinHao>"?).*?\k<YinHao>[,}]?)/is', '"$1": $2',$con );//若键名没有双引号则添加  
    if($quotes_key)  
    {  
        $con = preg_replace('/("\w+"): ?([^"\s]+)([,}])[\s]?/is', '$1: "$2"$3',$con );//给键值添加双引号 
    } 
    $con = str_replace(array('<|YH|>'),array('\\"'),$con);//还原替换  
    return $con;  
}  

参考:http://bbs.csdn.net/topics/390496037

http://chenwei.me/p/59.html

管理JAE代码的Git工具安装汉化

作者:matrix 发布时间:2014 年 8 月 31 日 分类:零零星星

放在jae的代码修改的时候使用git方便很多,由于没有接触过GIT,这里记录一些。

以win8-64bit为例:

安装工具

msysGit[Git-1.9.4-preview20140611]

TortoiseGit-64bit

TortoiseGit-64bit中文语言包

汉化步骤

安装完这仨文件后重启。

右击资源管理器任意空白位置,选择 TortoiseGit -> Settings

选择 TortoiseGit -> Settings

 

从右侧语言设置中,选择简体中文。

选择简体中文

参考:http://www.freehao123.com/jae-git/

JS的eval函数解密反混淆

作者:matrix 发布时间:2014 年 5 月 14 日 分类:零零星星

打开有些js文件看到的eval(function(p,a,c,k,e,d)开头,只有结尾部分有很多竖线|间隔的字符,这是eval混淆了的。想要查看原本的代码就需要反混淆。下面的html工具可以用到,不算是很全面,仅供参考。

html文件:

http://pan.baidu.com/s/1pJ8YhSJ
http://www.400gb.com/file/64636372
这个页面上加载起来估计有冲突,建议把html文件下载到本地打开使用。

参考:http://www.chinadmd.com/file/ciziaiisseupixiwiswtstpo_3.html

用php的CURL模拟登录正方教务系统

作者:matrix 发布时间:2014 年 5 月 12 日 分类:零零星星

学校用的是正方教务系统,这玩意做的太恶心了。

php模拟登录前进行fiddler软件抓包。

每个学校的正方教务系统略有不同,这里仅仅是个样本。

用php的CURL模拟登录正方教务系统

根据抓包结果找到提交所需的post数据

__VIEWSTATE=内容&tbYHM=内容&tbPSW=内容&ddlSF=%D1%A7%C9%FA&imgDL.x=39&imgDL.y=13
说明:第一个内容是登录页面里找到的,第二、三个内容是用户名和密码

判断是否登录成功

成功登录后页面会302跳转到/xsmainfs.aspx?xh=XXX的URL

php代码参考:

<?php
$url = '';//正方教务系统登录地址
$ID = '';
$PA = '';
$cookieid = Get_SessionId($url);//获取登录页面的会话ID
/*
 is_login()函数判断是否登录成功
*/
    function is_login()
    {
        global $url,$ID,$PA,$cookieid;
        preg_match('#value="([^"]+)"#', curl_get($url), $vi);
        $p = '__VIEWSTATE=' . urlencode($vi[1]) . '&tbYHM=' . $ID . '&tbPSW=' . $PA . '&ddlSF=%D1%A7%C9%FA&imgDL.x=39&imgDL.y=13'; //默认学生
        $co = curl_get($url, $p, 0, 0, 0, array('Cookie: ASP.NET_SessionId=' . $cookieid));
        //curl_get('地址/xsleft.aspx?flag=grxx',  array('Cookie: ASP.NET_SessionId=' . $cookieid)); //获取基本信息以前必须访问这个地址
        return strpos($co, "/xsmainfs.aspx?xh=" . $ID)? true : false ;
    }
    function curl_get($url, $add_arry_header = 0)
    {
        $ch = curl_init($url);
        curl_setopt($ch, CURLOPT_HTTPHEADER, array('User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_1_2 like Mac OS X; en-us) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/7D11 Safari/528.16'));
        if ($add_arry_header)
        {
            curl_setopt($ch, CURLOPT_HTTPHEADER, $add_arry_header);
        }
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        $get_url = curl_exec($ch);
        curl_close($ch);
        return $get_url;
    }
function Get_SessionId($u) // 获取aspx的会话ID
    {
        $a = get_headers($u);
        $a = str_replace(array(';', ':'), '&', $a[6]);
        parse_str($a, $aa);
        return $aa['ASP_NET_SessionId'] ;
    }
?>

说明:代码不完全可用,只是参考,记录。

ps:

正方教务系统的登录地址还有default4.aspx的精简登录框,模拟这个的话应该更简单。

 

 

Android端谷歌账号无法登录

作者:matrix 发布时间:2014 年 5 月 5 日 分类:兼容并蓄 零零星星

 

Android端登陆Google账号提示:无法登录,与Google服务器通信时出现问题 请稍后重试。

以前用的时候都是好好的,不知道怎么搞的就无法登陆Google账号。

网上一查才晓得是天朝的大号防火墙导致的,还好找到有软件解决。

Hosts修改工具 SmartHosts 
网盘备份:http://pan.baidu.com/s/1kTyvlwb

说明:

安装时要授予ROOT权限

选择第一项,应用Smarthosts

选择Android & Google Serivices和原始hosts文件内容,可根据不同情况选择

保存后回到主页面,选择切换hosts文件  -->>  切换至SmartHosts版本hosts文件,  保存后再重启手机就可以正常使用谷歌服务了。

测试截图来自MI2S.

版本信息 阅读剩余部分 »

win8以太网状态一直显示已禁用

作者:matrix 发布时间:2014 年 4 月 29 日 分类:零零星星

 

win8以太网状态一直显示已禁用

win8系统时遇到的这个问题,无线网正常使用,插上网线后不管怎么弄都启用不了。重启或者注销帐户后又可以正常使用了,不知为何。

现在终于搞定,是驱动的问题。

重新安装以太网卡的驱动就解决了。

20140428234350

买电脑(Asus x54H)时送的dvd光盘里面有驱动程序,找到后安装驱动。

这里顺带打包(Asus x54H笔记本适用):

http://pan.baidu.com/s/1c0eRKQG

我用的是这个办法,但不一定适用于你。多试试~

参考:http://zhidao.baidu.com/question/1509457627485214900.html

PHP的基本规则

作者:matrix 发布时间:2014 年 4 月 23 日 分类:兼容并蓄 零零星星

PHP的基本规则

下面内容来自 php开发实战宝典 附录A: php编码规则

A.1  PHP File文件格式

A.1.1  常规

对于只包含PHP代码的文件,结束标志("?>")是不允许存在的,否则会导致文件末尾被意外地注入空白并显示输出。

由__HALT_COMPILER()允许的任意的二进制代码的内容被Zend Framework PHP文件或由它们产生的文件禁止。这个功能只对特殊的安装脚本开放。

A.1.2  缩进

使用4个空格的缩进,而不使用制表符TAB。
阅读剩余部分 »

ilovefile在线格式转换工具

作者:matrix 发布时间:2014 年 4 月 19 日 分类:零零星星

地址:http://ilovefile.com/

平时为了转换某个文档可能需要安装软件,有这种web工具也就没必要了,很方便的。

ILoveFile 支持且可互相转换的格式包括:

图片:JPG、PNG、BMP、EPS、GIF、ICO、TIF、PCX、TGA、WBMP
文档:PDF、TXT、RTF、ODT、WPD、XLS、XLSX、ODS、DOC、DOCX、CSV
音频:M4A、AIFF、FLAC、MP3、OGG、WAV

简单说明:

打开网站选择文件类型,从左至右分别为图片、文档、音频。

点击Select files选择需要转换的文件。

Convert all JPG files to  选择转换后的文件格式。

ilovefile在线格式转换工具-01

点击Convert this file开始转换。

ilovefile会显示上传、转换的进度

ilovefile在线格式转换工具-02

完成后点击 Download file 即可下载。

File available time表示文件删除的倒计时。

下载完成

完成后记的评分吧~ 非常不错!