首页 > 解决方案 > 如何反序列化,然后将生成的多维数组转换为纯文本,去掉代码?

问题描述

提前感谢您对此的任何帮助。我正在尝试使用允许使用 PHP 过滤器的 WP All Export 将一些产品规格从 Wordpress 站点导出到电子表格,并且我们希望它导出为易于阅读的文本。规范存在于自定义 WP 字段中,该字段导出为序列化数组。我一点也不精通PHP,但我认为我需要将WP字段内容反序列化为一个数组,然后我需要将生成的数组转换为尽可能接近简单的字符串(尽管规范之间的换行符类别将是理想的)。这可能吗?这是我需要转换的字段之一的示例:


a:3:{s:6:"标题";b:0;s:7:"标题";b:0;s:4:"正文";a:4:{i:0;a:2: {i:0;a:1:{s:1:"c";s:9:"材料";}i:1;a:1:{s:1:"c";s:26:"钢合金";}}i:1;a:2:{i:0;a:1:{s:1:"c";s:6:"重量";}i:1;a:1:{s :1:"c";s:18:"2.25 lbs";}}i:2;a:2:{i:0;a:1:{s:1:"c";s:6:"长度";}i:1;a:1:{s:1:"c";s:16:"6.32 in";}}i:3;a:2:{i:0;a:1:{s :1:"c";s:20:"适用标准";}i:1;a:1:{s:1:"c";s:46:"符合 OSHA xxx, ANSI xxx";}}} }


..理想情况下看起来像这样:


材料:钢合金,
重量:2.25 磅,
长度:6.32 英寸,
适用标准:符合 OSHA xxx、ANSI xxx


标签: phpjsonwordpress

解决方案


该序列化数据以某种方式变得格式不正确。一些字段的长度不正确,例如 Steel Alloy 是 11 个字符,但您的字符串显示为 26。我怀疑您在发布之前手动编辑了数据。这是更正后的版本:

a:3:{s:6:"header";b:0;s:7:"caption";b:0;s:4:"body";a:4:{i:0;a:2:{i:0;a:1:{s:1:"c";s:9:"Materials";}i:1;a:1:{s:1:"c";s:11:"Steel alloy";}}i:1;a:2:{i:0;a:1:{s:1:"c";s:6:"Weight";}i:1;a:1:{s:1:"c";s:8:"2.25 lbs";}}i:2;a:2:{i:0;a:1:{s:1:"c";s:6:"Length";}i:1;a:1:{s:1:"c";s:7:"6.32 in";}}i:3;a:2:{i:0;a:1:{s:1:"c";s:20:"Applicable Standards";}i:1;a:1:{s:1:"c";s:24:"Meets OSHA xxx, ANSI xxx";}}}}

检索数据相当简单。您可以根据您的确切需求对其进行调整:

$unserialized = unserialize($your_string);
foreach ($unserialized['body'] as $item) {
    echo $item[0]['c'] . ': ' . $item[1]['c'] . '<br />;
}

输出:

Materials: Steel alloy
Weight: 2.25 lbs
Length: 6.32 in
Applicable Standards: Meets OSHA xxx, ANSI xxx

推荐阅读