php - 如何使用 PHP 解析序列化数据?

标签 php parsing serialization

这是我的序列化数据的示例:

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 解析它并显示如下值:

  • 个人资料名字:Ben
  • 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);   

您序列化的字符串已损坏,因此您需要先修复它,然后反序列化

输出

    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

关于php - 如何使用 PHP 解析序列化数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43751303/

相关文章:

php - 我如何在 mysql 表中存储营业时间

php - 如何同时对多个表使用插入查询?

php - 将 html 日期和时间转换为我的数据库日期时间列

php - 在通过 jQuery 上传到数据库之前,如何使用进度条和图像预览上传图像?

java - ANTLR4:上下文相关的空间?

c# - 将 JSON 对象反序列化为 C# 列表

c++ - Cpp : JSON parser in Cpp that provide support Serialize/Deserialize feature, 将 JSON 对象转换为用户定义的类?

parsing - 多语言解析器生成器

java - 无法使用 Java MongoDB 驱动程序读取或序列化带有枚举的 POJO

php - PHP 中的数组查找速度;长缓存键