这是我的序列化数据的示例:
a:10:{s:7:"contact";s:1:"1";s:19:"profile_affiliation";s:23:"University, Inc.";s:18:"profile_first_name";s:3:"Ben";s:22:"profile_street_address";s:19:"8718 Tot Ave. S.";s:12:"profile_city";s:6:"Mobile";s:13:"profile_state";s:2:"AL";s:15:"profile_country";s:3:"USA";s:15:"profile_zipcode";s:5:"36695";s:18:"profile_home_phone";s:10:"2599494420";s:17:"profile_last_name";s:6:"Powers";}
我希望能够使用 PHP 解析它并显示值,如下所示:
- 个人资料名:本
- profile_last_name:权力
- 个人资料状态: AL
我知道我需要像这样反序列化它:
$unserialize = unserialize($data);
但我在用 PHP 解析数组时遇到了麻烦。我不断收到“为 foreach() 提供的参数无效”错误和不正确的数组输出。
这就是您正在寻找的
<?php
$serialized = 'a:10:{s:7:"contact";s:1:"1";s:19:"profile_affiliation";s:23:"University, Inc.";s:18:"profile_first_name";s:3:"Ben";s:22:"profile_street_address";s:19:"8718 Tot Ave. S.";s:12:"profile_city";s:6:"Mobile";s:13:"profile_state";s:2:"AL";s:15:"profile_country";s:3:"USA";s:15:"profile_zipcode";s:5:"36695";s:18:"profile_home_phone";s:10:"2599494420";s:17:"profile_last_name";s:6:"Powers";}';
$fixed = preg_replace_callback(
'/s:([0-9]+):"(.*?)";/',
function ($matches) { return "s:".strlen($matches[2]).':"'.$matches[2].'";'; },
$serialized
);
$original_array=unserialize($fixed);
echo "<pre>";
print_r($original_array);
您序列化的字符串已损坏,因此您需要先修复它反序列化 it
output
Array
(
[contact] => 1
[profile_affiliation] => University, Inc.
[profile_first_name] => Ben
[profile_street_address] => 8718 Tot Ave. S.
[profile_city] => Mobile
[profile_state] => AL
[profile_country] => USA
[profile_zipcode] => 36695
[profile_home_phone] => 2599494420
[profile_last_name] => Powers
)
输出:-https://eval.in/785908 https://eval.in/785908
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)