interesse[angebote][flurfuerderfahrzeuge]
作为我的php var中的字符串。现在我需要以某种方式转换它(使用正则表达式或explode())所以它看起来像这样:$_POST['interesse']['angebote']['flurfuerderfahrzeuge']
和使用eval()
来获取值。但我相信必须有一个更简单的方法来做到这一点。
有任何想法吗?谢谢!
答案 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;