首页 > 解决方案 > 如何解析这个未知的数组表示法?这个数组表示法来自什么语言?

问题描述

我正在访问旧数据库中的数据,其中一些记录具有此数组表示法,它定义了房地产搜索的标准。有几百个,我需要将它们转换为我可以在 JS 和 PHP 中使用的数据。

这是数组表示法的示例。我还没有找到任何其他关于这种格式的问题。

a:14:{s:2:"id";s:22:"our-listings-metrolist";s:3:"map";a:4:{s:8:"latitude";s:17:"38.93309311783631";s:9:"longitude";s:19:"-120.74187943878752";s:4:"zoom";s:1:"8";s:4:"open";s:1:"0";}s:4:"feed";s:15:"ncarmetrolistca";s:6:"panels";a:2:{s:9:"office_id";a:3:{s:7:"display";s:1:"1";s:9:"collapsed";s:1:"0";s:6:"hidden";s:1:"0";}s:4:"type";a:3:{s:7:"display";s:1:"1";s:9:"collapsed";s:1:"0";s:6:"hidden";s:1:"0";}}s:9:"office_id";s:5:"01PHA";s:11:"search_type";s:0:"";s:3:"idx";s:15:"ncarmetrolistca";s:14:"search_subtype";s:0:"";s:10:"snippet_id";s:22:"our-listings-metrolist";s:13:"snippet_title";s:42:"Our Sacramento / Sierra Foothills Listings";s:10:"page_limit";s:1:"6";s:7:"sort_by";s:17:"DESC-ListingPrice";s:4:"view";s:4:"grid";s:12:"price_ranges";s:4:"true";}

这并不难理解,如果需要,我会编写自己的解析器,但我希望我不需要。a定义一个数组,s定义一个字符串,并i定义一个整数。每个定义字符后面的整数定义数组、字符串或整数的长度,然后是在该位置定义的值,表示键或值。

这是什么符号?有没有办法可以快速将其解析为可以在 JS 和 PHP 中使用的格式。我需要构建自己的解析器吗?

标签: arraysparsingnotation

解决方案


这就是 php 中对象的序列化。

例如:

 $obj = ['a'=>1, 'b'=>true, 'c'=>'foo'];
 echo serialize($obj); /* prints: a:3:{s:1:"a";i:1;s:1:"b";b:1;s:1:"c";s:3:"foo";} */

要反序列化,只需使用该unserialize()函数。


推荐阅读