注册 登录

清河洛

php的序列化函数

qingheluo2017-01-06清河洛439
PHP序列化功能是转换生成一个可存储的字符串,此字符串包含了表示$value的字节流,可以存储于任何地方这有利于存储或传递 PHP 的值,同时不丢失其类型和结构serialize(mixed $value):将除了resource(资源句柄)之外的任何类型转换为序列化字符串unserialize($str) :将已序列化的字符串变回PHP的值如何序列化成json格式呢json_encode(mixed $value [, int $options = 0 [, int $depth = 512 ]])把除了resource类型之外的数据类型编码为json格式,所有字符串数据的编码必须是U...

PHP序列化功能是转换生成一个可存储的字符串,此字符串包含了表示$value的字节流,可以存储于任何地方

这有利于存储或传递 PHP 的值,同时不丢失其类型和结构

serialize(mixed $value):将除了resource(资源句柄)之外的任何类型转换为序列化字符串

unserialize($str) :将已序列化的字符串变回PHP的值

如何序列化成json格式呢

json_encode(mixed $value [, int $options = 0 [, int $depth = 512 ]])

把除了resource类型之外的数据类型编码为json格式,所有字符串数据的编码必须是UTF-8。
depth:设置最大递归深度。必须大于0。
options
    JSON_HEX_TAG:1,所有的<和>转换成\u003C和\u003E
    JSON_HEX_AMP:2,所有的&转换成\u0026
    JSON_HEX_APOS:4,所有的单引号(')转换成 \u0027
    JSON_HEX_QUOT:8,所有的双引号(")转换成\u0022
    JSON_FORCE_OBJECT:16,使一个非关联数组输出一个类(Object)而非数组。 在数组为空而接受者需要一个类(Object)的时候尤其有用。
    JSON_NUMERIC_CHECK:32,将所有数字字符串编码成数字(numbers)
    JSON_UNESCAPED_SLASHES:64,不要编码反斜杠(/)
    JSON_PRETTY_PRINT:128,用空白字符格式化返回的数据
    JSON_UNESCAPED_UNICODE:256,以字面编码多字节Unicode字符(默认是编码成 \uXXXX)

json_decode(string $json [,bool $assoc=FALSE [, int $depth = 512 [, int $options = 0 ]]])

把json字符串解析为php数据类型
assoc为TRUE时,将返回array而非object
depth:指定递归深度。
options
    JSON_OBJECT_AS_ARRAY:1,将json解析为数组而非object
    JSON_BIGINT_AS_STRING:2,将大数字编码成原始字符原来的值

json_decode要求的字符串($json参数)比较严格,否则返回NULL:
    (1)使用UTF-8编码
    (2)不能在最后元素有逗号
    (3)不能使用单引号
    (4)不能有\r,\t和BOM头,如果有请替换

去除BOM头方法一
    chr(239) . chr(187) . chr(191)拼接成utf-8 bom头,再使用trim函数即可
    trim($info,chr(239).chr(187).chr(191))

去除BOM头方法二
匹配是否存在bom头,存在则截掉前三位字符
    if(preg_match('/^\xEF\xBB\xBF/',$json_data)){
        $json_data = substr($info,3);
    }


网址导航