使用html数组路径获取数组

时间:2010-05-28 15:57:49

标签: php html arrays

嘿,我把这个路径名从输入元素interesse[angebote][flurfuerderfahrzeuge]作为我的php var中的字符串。现在我需要以某种方式转换它(使用正则表达式或explode())所以它看起来像这样:$_POST['interesse']['angebote']['flurfuerderfahrzeuge']和使用eval()来获取值。但我相信必须有一个更简单的方法来做到这一点。 有任何想法吗?谢谢!

2 个答案:

答案 0 :(得分:2)

eval()是邪恶的()。在这种情况下,有一些更快的选择可以避免它。

如果您只想转换语法,那么我有一个正则表达式:

  $name = '$' . preg_replace("/\[([^\]]+)\]/", '["$1"]', $path);

如果您的输入字符串不仅包含路径,还包含值(如果必须,则附加虚拟值),那么您可以使用 parse_str()将数组名称提取为实数PHP数组:

  $path = "whatever[subname][deepnesting]=1";
  parse_str($path, $as_var);
  print_r($as_var);

详细了解您的输入数据。


好的,只是想出你的意思。你想要淹没在$ _POST数组中。然后像这样使用逐步引用:

$path = "xxxx[yyyy][zzzz]";
$ref = & $_POST;

preg_match_all("/\w+/", $path, $uu);
foreach ($uu[0] as $subname) {
   $ref = & $ref[$subname];
}

print_r($ref);   // = $_POST[xxxx][yyyy][zzzz]

答案 1 :(得分:0)

好吧我知道它很简单,但我看起来很难看, 这就是我现在使用的:

    $path = 'interesse[angebote][flurfuerderfahrzeuge]';
    $post_var = '$_POST['.str_replace(']]', ']', str_replace('[', '][', $path));
    eval('$value = '.$post_var.';');
    echo $value;