首页 > 解决方案 > php从字符串创建数组和子数组

问题描述

我想将字符串转换为数组。我想要一个具有这样子数组的数组:

我的字符串:

field=3,icon=[class='test',svg=null],test=[pass='345',username='salar']

至 :

array("field"=> 3,"icon"=> [ "class" =>  "test", "svg" => null ], "test"=> [ "pass" =>  "345", "username" => 'salar' ] )

标签: php

解决方案


强烈建议更改正在生成的字符串格式。最好使用 JSON 等现有格式,而不是创建/解析您自己的格式。

说到 JSON,“解析”这种格式的一种方法是将其转换为 JSON,然后对其进行解析。

因此,将 转换=:,将所有键(和值)包装在 中"",转换[]{},然后将整个内容包装在{}.

<?php
$data = "field=3,icon=[class='test',svg=null],test=[pass='345',username='salar']";

// Fix quotes
$jsonData = str_replace("'", '"', $data);

// Convert arrays to objects
$jsonData = str_replace(['[', ']'], ['{', '}'], $jsonData);

// Fix keys
$jsonData = preg_replace("/(^|,|{)(.+?)=/", '$1"$2":', $jsonData);

// Parse as JSON
$result = json_decode('{' . $jsonData . '}', true);

推荐阅读