如何将字符串数组转换为 php 数组?

How to convert String Array to php Array?

如何将 Sting 数组转换为 PHP 数组?

"['a'=>'value one','key2'=>'value two']"

$data=['a'=>'value one','key2'=>'value two'];

如果有人知道任何解决方案,请告诉我


我想通过文本区域获取数组输入。我想将其转换为 PHP 数组。

当我浏览文本区域时

['a'=>'value one','key2'=>'value two']

这是在提交 from

之后发生的

"['a'=>'value one','key2'=>'value two']"

现在如何将其转换为 PHP 数组?

使用 eval() 的极其不安全的版本:

<?php

$a = "['a'=>'value one','key2'=>'value two']";

eval('$b = '.$a.';');

print('<pre>');
print_r($b);

只有在您确定时才使用,其他人无法使用您的文本输入!

使用替换将其转换为 json 是 public 形式的更好选择。此外,如果你在工作中使用它,你可能会被解雇 :)

捕获语法错误:

<?php

$a = "['a'=>'value one','key2'=>'value two'dsbfbtrg]";

try {
    eval('$b = '.$a.';');
} catch (ParseError $e) {
    print('Bad syntax');
    die();
    // or do something about the error
}

print('<pre>');
print_r($b);

假设您不允许多维数组,这将起作用:

$stringArray = "['a'=>'value one','key2'=>'value two']";
$array = array();

$trimmedStringArray = trim( $stringArray, '[]' );
$splitStringArray = explode( ',', $trimmedStringArray );
foreach( $splitStringArray as $nameValuePair ){
    list( $key, $value ) = explode( '=>', $nameValuePair );
    $array[$key] = $value;
}

输出:

Array
(
    ['a'] => 'value one'
    ['key2'] => 'value two'
)

在处理输入之前,您可能需要进行一些错误检查以确保输入的格式正确。

另一个选项:

<?php
$string = "['a'=>'value one','key2'=>'value two']";
$find = ["'", "=>", "[", "]"];
$replace = ["\"", ":", "{", "}"];
$string = str_replace($find, $replace, $string);
$array = json_decode($string, true);
var_dump($array);
?>