PHP的序列化与反序列化的使用
来源:互联网 发布:百度大数据怎么用 编辑:程序博客网 时间:2024/05/16 19:38
其实就是两个函数serialize()和unserialize()。做什么用的呢?官方说明
Generates a storable representation of a value
This is useful for storing or passing PHP values around without losing their type and structure.
生成一个可存储的值,可以很方便地存储或传递PHP值,同时保持原来的结构。可以序列化所有的数据结构,除了资源类型(保存的是引用,而不是实际的值)。一些PHP内部方法里就使用了序列化,如session。
session_start();
$_SESSION['data'] = array('hello','php');
//最终被转化为如下格式,保存在文件中
//data|a:2:{i:0;s:5:"hello";i:1;s:3:"php";}
都可以用来做什么呢?
页面之间传递值
有两个页面,要传递一个object,又不想用$_SESSION,这时就可以考虑序列化。
<?php
//page1.php
class test
{
private $i = 1;
public function display()
{
echo '$i='.$i;
}
}
$test = new test();
<form action='page2.php' method='post'>
<input type="hidden" name="data" value="<?php serialize($test); ?>" />
<input type="submit" value="submit" />
</form>
//page2.php
$test = unserialize($_POST['data']);
$test->display();
保存数据到数据库
wordpress的插件参数就是序列化后保存到数据库。
<?php
$data = $_POST['data'];//array
if(get_magic_quotes_gpc())
{
//去掉自动添加的转义符,避免被二次转义
$data = stripslashes($data);
}
//避免序列化后出现的特殊字符对SQL造成干扰
$data = mysql_real_escape_string(serialize($data));
//执行数据库操作...
缓存文件
kohana的缓存系统就是通过序列化实现的,原理session差不多。
注意
尽量不要序列化浮点数,如3.14159之类的,会有意想不到的结果
<?php
$val = 3.14159;
var_dump($val); // initial value: float(3.14159)
$val = serialize($val);
var_dump($val); // string(55) "d:3.14158999999999988261834005243144929409027099609375;"
如果在处理特殊字符上实在觉得麻烦,就用base64来帮忙
$send_data = base64_encode(serialize($obj));
$receive_data = unserialize(base64_decode($send_data));
- PHP的序列化与反序列化的使用
- PHP序列化与反序列化的使用
- php 数组的序列化与反序列化
- php序列化和反序列化的简单使用
- 序列化反序列化的使用
- php序列化与反序列化
- PHP多种序列化/反序列化的方法
- PHP多种序列化/反序列化的方法
- PHP多种序列化/反序列化的方法
- PHP多种序列化/反序列化的方法
- PHP多种序列化/反序列化的方法
- PHP多种序列化/反序列化的方法
- PHP多种序列化/反序列化的方法
- php的序列化和反序列化
- PHP多种序列化/反序列化的方法
- PHP多种序列化/反序列化的方法
- PHP多种序列化/反序列化的
- PHP多种序列化/反序列化的方法
- Another example of Expect
- Asp.Net 飞信接口测试
- Ext加载form
- Linux中文乱码问题解决方案
- emacs的Local Variables和vim的Modeline
- PHP的序列化与反序列化的使用
- Win XP 快速启动里“显示桌面”不见了,重新找回“显示桌面”的方法.
- WindowsXP终极优化设置大全
- 两篇破解无线路由的文章
- 解决问题的关键词:勇气、诚意、智慧!
- 网站功能框架
- 展望未来,总结过去10年的程序员生涯,给程序员小弟弟小妹妹们的一些总结性忠告
- HDOJ-2038-Turn the corner
- C#中对ActiveX控件的调用