把复杂的数据类型压缩到一个字符串中
serialize() 把变量和它们的值编码成文本形式
unserialize() 恢复原先变量
eg:
$stooges = array('Moe''Larry''Curly');
$new = serialize($stooges);
print_r($new);echo \"<br />\";
print_r(unserialize($new));
结果:a:3:{i:0;s:3:\"Moe\";i:1;s:5:\"Larry\";i:2;s:5:\"Curly\";
Array ( [0
=> Moe [1
=> Larry [2
=> Curly )
当把这些序列化的数据放在URL中在页面之间会传递时 , 需要对这些数据调用urlencode() , 以确保在其中的URL元字符进行处理:
$shopping = array('Poppy seed bagel' => 2'Plain Bagel' =>1'Lox' =>4);
echo '<a href=https://mparticle.uc.cn/"next.php?cart='.urlencode(serialize($shopping)).'\">next</a>';
margic_quotes_gpc和magic_quotes_runtime配置项的设置会影响传递到unserialize()中的数据 。
如果magic_quotes_gpc项是启用的 , 那么在URL、POST变量以及cookies中传递的数据在反序列化之前必须用stripslashes()进行处理:
$new_cart = unserialize(stripslashes($cart)); //如果magic_quotes_gpc开启$new_cart = unserialize($cart);
如果magic_quotes_runtime是启用的 , 那么在向文件中写入序列化的数据之前必须用addslashes()进行处理 , 而在读取它们之前则必须用stripslashes()进行处理:
$fp = fopen('/tmp/cart''w');
fputs($fpaddslashes(serialize($a)));
fclose($fp);
//如果magic_quotes_runtime开启$new_cat = unserialize(stripslashes(file_get_contents('/tmp/cart')));
//如果magic_quotes_runtime关闭$new_cat = unserialize(file_get_contents('/tmp/cart'));
在启用了magic_quotes_runtime的情况下 , 从数据库中读取序列化的数据也必须经过stripslashes()的处理 , 保存到数据库中的序列化数据必须要经过addslashes()的处理 , 以便能够适当地存储 。
mysql_query(\"insert into cart(iddata) values(1'\".addslashes(serialize($cart)).\"')\");
$rs = mysql_query('select data from cart where id=1');
$ob = mysql_fetch_object($rs);
//如果magic_quotes_runtime开启$new_cart = unserialize(stripslashes($ob->data));
//如果magic_quotes_runtime关闭$new_cart = unserialize($ob->data);
【PHP|php中序列化与反序列化】当对一个对象进行反序列化操作时 , PHP会自动地调用其__wakeUp()方法 。 这样就使得对象能够重新建立起序列化时未能保留的各种状态 。 例如:数据库连接等 。
- 元宇宙|工信部:培育一批进军元宇宙、区块链等新兴领域的创新型中小企业
- 作者:黎荔我收藏有一块小小的天然陨铁原石|陨石:家中的天外来客
- 人类永远无法消灭新冠病毒?世卫组织传出噩耗,全球目光转向中国
- 诺基亚|华为中兴等拿下电信23亿大单,诺基亚爱立信再次陪跑
- 约谈|上海市执法部门集中约谈“货拉拉”“快狗”等三家网络货运平台
- idc|中国电子云发布首款分布式存储产品CeaStor
- 一加科技|定制X轴线性马达、LTPO2.0屏幕,说一说我心目中最好的开年旗舰
- 京东金融|盘点华人对计算机互联网这些IT产业奉献者们,中国文化基因启示录
- 疫情|中信证券:12月智能手机国内出货同比提升、环比下降 看好2022年结构性机遇
- 尹志尧|跑出“临港加速度”,上海中微临港产业化基地(一期)项目主厂房顺利封顶