php - 如何反序列化,然后将生成的多维数组转换为纯文本,去掉代码?
问题描述
提前感谢您对此的任何帮助。我正在尝试使用允许使用 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
解决方案
该序列化数据以某种方式变得格式不正确。一些字段的长度不正确,例如 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
推荐阅读
- c# - Is there any way to save an image file to Mongo DB using ASP.NET MVC?
- python - range, if then, statement to print output based on data
- java - How can I convert Map
to Map > using Java 8 - r - Unpack json columns into a dataframe
- c# - How to separate business models from Identity models in ASP.NET?
- react-native - React Native Drawer and Tab Navigator
- flutter - Flutter 集成测试:模拟应用程序类值
- javascript - 使用 reduxjs/toolkit 向 createAction 函数添加有效负载
- sharepoint - 在 Microsoft Graph API 中按文件类型或名称过滤
- excel - SQL中等效的Excel合并单元格