php中连串化与反系列化精解_php技艺_脚本之家

在web开垦中指标的体系化与反体系化日常接纳,比较主流的有json格式与xml格式的类别化与反体系化,前几日想写个jsop的小demo,结果开掘不会动用php体系化,查了须臾间素材,做个笔记轻便数组json格式种类化/反类别化

如果magic_quotes_runtime是启用的,那么在向文件中写入类别化的数额早先必需用addslashes()进行拍卖,而在读取它们在此之前则必得用stripslashes()实行管理:

就算如此由于HTML转码原因,输出格式很奇异,但实际上体系化的字符串是这么的

当把那一个连串化的数目放在U奥德赛L中在页面之间会传递时,供给对这么些多少调用urlencode(),以管教在里头的UMuranoL元字符实行拍卖:

$data=array('Name'=>'Byron','Age'=>24,'Sex'=>'Male','Friends'=>array('Casper','Frank','Vincent')); $json=json_encode;//将数组序列化为json字符串 echo $json.'
'; $array_json= json_decode;//将json字符串反序列化为数组 while=each{ if{ echo "$key: $value
"; }else{ echo "$key: "; foreach  { echo "$current  "; } echo '
'; } }

结果:a:3:{i:0;s:3:”Moe”;i:1;s:5:”Larry”;i:2;s:5:”Curly”;}

class Me { public $name; public $age; public $friends; function __construct { $this->name=$name; $this->age=$age; $this->friends=$friends; } }

$me1=new Me('Byron',24,array('Casper','Frank','Vincent')); $me2=new Me('Casper',25,array('Byron','Frank','Vincent')); $me3=new Me('Frank',26,array('Casper','Byron','Vincent')); //创建一个复杂的数组,子元素是自定义类,自定义类中包含数组字段 $array_me=array; $json=json_encode;//序列化对象数组为json字符串 echo $json.'
'; $a=json_decode;//将json字符串反序列化为对象数组 foreach  { echo $aa->name.'
'; }
$fp = fopen;fputs($fp,addslashes;fclose;//如果magic_quotes_runtime开启$new_cat = unserialize(stripslashes(file_get_contents;//如果magic_quotes_runtime关闭$new_cat = unserialize(file_get_contents;

php提供wddx_serialize_value和wddx_deserialize函数对指标开展xml格式体系化/反种类化操作

Array ( [0] => Moe [1] => Larry [2] => Curly )

简短数组xml格式种类化/反种类化

$shopping = array('Poppy seed bagel' => 2,'Plain Bagel' =>1,'Lox' =>4);echo 'next';
$me1=new Me('Byron',24,array('Casper','Frank','Vincent')); $me2=new Me('Casper',25,array('Byron','Frank','Vincent')); $me3=new Me('Frank',26,array('Casper','Byron','Vincent')); //创建一个复杂的数组,子元素是自定义类,自定义类中包含数组字段 $array_me=array; $xml=wddx_serialize_value;//序列化对象数组为xml字符串 echo $xml.'
'; $a=wddx_deserialize;//将xml字符串反序列化为对象数组 foreach  { echo $aa->name.'
'; }
$stooges = array('Moe','Larry','Curly');$new = serialize;print_r;echo "
";print_r;

改变的xml字符串结构是那样的

unserialize() 复苏原本变量

能够看见连串化出来的字符串格式非常切合预期。复杂对象xml格式连串化/反连串化同样wddx_serialize_value和wddx_deserialize函数也能胜任复杂对象举行xml格式类别化/反系列化操作,使用刚才的目的做例子

serialize() 把变量和它们的值编码成文本格局

php提供了json_encode和json_decode函数对指标开展json格式连串化/反类别化操作

mysql_query("insert into cart values(1,'".addslashes");$rs = mysql_query('select data from cart where id=1');$ob = mysql_fetch_object;//如果magic_quotes_runtime开启$new_cart = unserialize(stripslashes;//如果magic_quotes_runtime关闭$new_cart = unserialize;

终极初学php,小说多有不当,希望大家商议指正。

上述便是本文的全体内容,希望本文的内容对大家的学习只怕办事能带给一定的帮手,相同的时候也目的在于多多照料脚本之家!

和json格式相比较的话,多出去不菲字段复杂对象json格式类别化/反种类化非常多时候我们在张开操作的时候,管理的目的实际不是简约数组,而是我们自定义的贰个对象的数组,json_encode和json_decode也是能够胜任的。自定义二个和上边数组内容临近的目的

如果magic_quotes_gpc项是启用的,那么在U科雷傲L、POST变量以致cookies中传送的数码在反序列化早前必须用stripslashes()实行管理:

$data=array('Name'=>'Byron','Age'=>24,'Sex'=>'Male','Friends'=>array('Casper','Frank','Vincent')); $xml=wddx_serialize_value;//把数组序列化为xml字符串 echo $xml.'
'; $array_xml=wddx_deserialize;//把xml字符串反序列化为数组 while=each{ if{ echo "$key: $value
"; }else{ echo "$key: "; foreach  { echo "$current  "; } echo '
'; } }

当对一个对象进行反系列化操作时,PHP会自动地调用其__wakeUp()方法。那样就使得对象能够再一次确立起系列化时未能保存的种种场地。譬喻:数据库连接等。

把纷纭的数据类型压缩到八个字符串中

margic_quotes_gpc和magic_quotes_runtime配置项的装置会影响传递到unserialize()中的数据。

在启用了magic_quotes_runtime的动静下,从数据库中读取种类化的数额也必须要透过stripslashes()的管理,保存到数据库中的连串化数据必定要透过addslashes()的拍卖,以便能够切合地蕴藏。

$new_cart = unserialize; //如果magic_quotes_gpc开启$new_cart = unserialize;

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图