将自定义键解析为值字符串到实际数组中

时间:2013-08-11 21:27:38

标签: php string parsing

我想问一下,我是否可以通过某种方式操作已经构建的php函数,将格式为key => value的字符串转换为实际的字符串,分别包含键和值?我知道有parse_str,但我相信这是key=value语法

这个问题似乎不清楚所以这是一个例子:

我有一个像color => blue\nshape => sphere\nsize => medium这样的字符串,我想把它变成一个数组

4 个答案:

答案 0 :(得分:1)

您可以替换字符并使用parse_str:

$string = 'color => blue\nshape => sphere\nsize => medium';
$string = str_replace(array(' => ', "\\n"), array('=', '&'), $string);
parse_str($string, $output);

print_r($output);

编辑:

或使用strtokexplode的组合:

$string = 'color => blue\nshape => sphere\nsize => medium';
$output = array();
$tok = strtok($string, "\\n");
while ($tok !== false) {
    $array = explode(' => ', $tok);
    $output[$array[0]] = $array[1];
    $tok = strtok("\\n");
}

print_r($output);

我意识到strtok仅在分隔符由1个字符组成时才有用。所以最好只使用爆炸版本。

答案 1 :(得分:1)

试试这段代码:

$str='color => blue\nshape => sphere\nsize => medium;';
$first_arr=explode('\\', $str);
$array=array();
foreach ($first_arr as $value) {
    $var=explode('=>', $value);
    $array[$var[0]]=$var[1];
}
var_dump($array);

答案 2 :(得分:0)

$string = 'color => blue\nshape => sphere\nsize => medium';
$foo = array();

// Explode your string
$stringParts = explode("\n", $string);

foreach ($stringParts as $item) {

    // For each "item" in your string
    // Separate key from value
    $item = explode(' => ', $item);

    // Assign it as a key-value combination in your new array $foo
    $foo[$item[0]] = $item[1];
}

print_r($foo);

答案 3 :(得分:-1)

parse_str(str_replace("\n", "&", $str), $output);