Php 如何从这段代码中提取数据(以前从未见过这种格式)?

Php 如何从这段代码中提取数据(以前从未见过这种格式)?,php,wordpress,Php,Wordpress,我在wordpress中使用一个插件,它以特定的方式存储我的数据。我在如何使用php将数据提取到数组中遇到了一个问题。目前保存在数据库中的数据是我以前从未见过的这种格式。我想从这些数据中获取名称、价格和推荐金额 我曾尝试使用php foreach循环来提取数据,但它无法识别foreach函数 a:2:{i:0;a:4:s:4:"name";s:14:"Tower";s:2:"id";i:4177;s:5:"price";i:500;s:15:"referral_amount";s:3:"20";

我在wordpress中使用一个插件,它以特定的方式存储我的数据。我在如何使用php将数据提取到数组中遇到了一个问题。目前保存在数据库中的数据是我以前从未见过的这种格式。我想从这些数据中获取名称、价格和推荐金额

我曾尝试使用php foreach循环来提取数据,但它无法识别foreach函数

a:2:{i:0;a:4:s:4:"name";s:14:"Tower";s:2:"id";i:4177;s:5:"price";i:500;s:15:"referral_amount";s:3:"20";}i:1;a:4:s:4:"name";s:25:"Square";s:2:"id";i:3998;s:5:"price";i:178;s:15:"referral_amount";s:4:"87.4";}}
我希望阵列以这种方式存储数据:

{
  name:'Tower',
  price:500,
  referral_amount:20,
}

有人知道如何使用php提取此类数据吗?

使用的是什么数据库?您发布的字符串看起来像是一个序列化字符串,但肯定有任何拼写错误,或者您可能没有复制它,因为有人证明我没有复制它,它没有被解析。您可以尝试使用php函数unserialize。这看起来像是一个序列化的字符串-您通常可以使用
unserialize()
将其取回-但看起来给定的字符串有问题?您也可以在这里测试它:谢谢您,stender。。是的..我只是在unserialize.com上检查它..显然它是一个序列化字符串…这是我第一次遇到这种数据格式..可能这会有帮助。请尝试一下。注意
/e
修饰符,它在PHP7.3I中不可用。我已经解决了这个问题。请现在试一试。
$data = 'a:2:{i:0;a:4:{s:4:"name";s:14:"Tower";s:2:"id";i:4177;s:5:"price";i:500;s:15:"referral_amount";s:3:"20";}i:1;a:4:{s:4:"name";s:25:"Square";s:2:"id";i:3998;s:5:"price";i:178;s:15:"referral_amount";s:4:"87.4";}}';
$data = preg_replace_callback('!s:(\d+):"(.*?)";!',
function ($match) {
    return 's:'.strlen($match[2]).':"'.$match[2].'";';
},
$data);
$data_array = unserialize($data);
$final_data = json_encode($data_array);

echo $final_data;