php中的序列化与反序列化
1.serialize() <===> unserialize(),这个大家用的最多, 老熟人了
session保存默认用的就是这个.
如果想存储对象,数组数据等可以用(试试跟var_export()比较)
xmlrpc提供了php与xml格式间转换的方法.
参考http://www.xmlrpc.com/, http://www.ugia.cn
相信很多人都在用
应用搜搜google就知道了.
提供的函数有两个json_encode(), json_decode();
应用及优势参考文章http://www.cswiki.com/blog/?p=70
google, yahoo都在用, prototype.js可以用header('X-JSON:...');
AJAX
注意两个设置
arg_separator.output
arg_separator.input
string http_build_query ( array formdata [, string numeric_prefix]);
[手册]:如果反序列器发现有未定义类要被实例化,将会调用反序列回调函数(使用未定义类作为参数)。
如果指定函数不存在,或者此函数没有包含/执行该未定义类,则显示警告。所以只有在你确实想要执行
这样的回调函数时才设置该选项。
(模块设置略)
1.serialize() <===> unserialize(),这个大家用的最多, 老熟人了
session保存默认用的就是这个.
如果想存储对象,数组数据等可以用(试试跟var_export()比较)
CODE:
<?php
session_start();
echo $foo = serialize($_SESSION)
print_r(unserialize($foo));
?>
2.xmlrpc_encode, xmlrpc_decode 对应模块 php_xmlrpcsession_start();
echo $foo = serialize($_SESSION)
print_r(unserialize($foo));
?>
xmlrpc提供了php与xml格式间转换的方法.
参考http://www.xmlrpc.com/, http://www.ugia.cn
相信很多人都在用
CODE:
<?php
echo $foo = xmlrpc_encode($_ENV);
print_r(xmlrpc_encode($foo));
?>
3.wddx, 跟xmlrpc差不多 参考手册echo $foo = xmlrpc_encode($_ENV);
print_r(xmlrpc_encode($foo));
?>
应用搜搜google就知道了.
CODE:
<?php
//wddx_serialize_vars();
echo $foo = wddx_serialize_value($_SERVER);
print_r(wddx_deserialize($foo));
?>
4.JSON, 对应模块 php_json, 能实现跟js对象之间的转换, //wddx_serialize_vars();
echo $foo = wddx_serialize_value($_SERVER);
print_r(wddx_deserialize($foo));
?>
提供的函数有两个json_encode(), json_decode();
应用及优势参考文章http://www.cswiki.com/blog/?p=70
google, yahoo都在用, prototype.js可以用header('X-JSON:...');
AJAX
CODE:
<?php
//注意格式及中文问题
$foo = '[{"uid":1000,"name":"abc"},{"uid":1002,"name":"def"},{"uid":1003,"name":"ghi"}]';
$bar = json_decode($foo);
print_r($bar);
echo json_encode($bar);
?>
5.urlparam序列化 http_build_query()也算吧,反序列化方法很多,url过来的话apache就给处理好了//注意格式及中文问题
$foo = '[{"uid":1000,"name":"abc"},{"uid":1002,"name":"def"},{"uid":1003,"name":"ghi"}]';
$bar = json_decode($foo);
print_r($bar);
echo json_encode($bar);
?>
注意两个设置
arg_separator.output
arg_separator.input
string http_build_query ( array formdata [, string numeric_prefix]);
CODE:
<?php
//可以是对象或整形下标数组,见手册
$foo = array( 'ids'=>array(520, 521, 522),
'action'=>'del'
);
echo http_build_query($foo);
?>
6.一个设置:unserialize_callback_func PHP_INI_ALL//可以是对象或整形下标数组,见手册
$foo = array( 'ids'=>array(520, 521, 522),
'action'=>'del'
);
echo http_build_query($foo);
?>
[手册]:如果反序列器发现有未定义类要被实例化,将会调用反序列回调函数(使用未定义类作为参数)。
如果指定函数不存在,或者此函数没有包含/执行该未定义类,则显示警告。所以只有在你确实想要执行
这样的回调函数时才设置该选项。
(模块设置略)
CODE:
<?php
ini_set('unserialize_callback_func', 'unserialize_callback_func');
function unserialize_callback_func($str) {
eval("class $str{}");
}
print_r(unserialize('O:3:"foo":1:{s:3:"bar";s:3:"bar";}'));
?>
ini_set('unserialize_callback_func', 'unserialize_callback_func');
function unserialize_callback_func($str) {
eval("class $str{}");
}
print_r(unserialize('O:3:"foo":1:{s:3:"bar";s:3:"bar";}'));
?>