Hé, j'ai ce nom de chemin à partir d'un élément d'entrée interesse[angebote][flurfuerderfahrzeuge]
comme une chaîne de caractères dans ma variable php. Maintenant, je dois la convertir d'une manière ou d'une autre (avec regex ou explode()) pour qu'elle ressemble à ceci : $_POST['interesse']['angebote']['flurfuerderfahrzeuge']
et l'utilisation eval()
pour obtenir la valeur. Mais je suis sûr qu'il doit y avoir un moyen beaucoup plus simple de le faire. Avez-vous une idée ? Merci !
Réponses
Trop de publicités?Eval() est evil(). Et il existe des options plus rapides pour l'éviter dans ce cas.
Si vous souhaitez simplement convertir la syntaxe, j'ai une expression rationnelle :
$name = '$' . preg_replace("/\[([^\]]+)\]/", '["$1"]', $path);
Si votre chaîne d'entrée ne contient pas seulement le chemin, mais aussi une valeur (attachez une valeur fictive si vous le souhaitez), vous pouvez alors simplement utiliser parse_str() pour extraire les noms des tableaux dans un vrai tableau PHP :
$path = "whatever[subname][deepnesting]=1";
parse_str($path, $as_var);
print_r($as_var);
Précisez vos données d'entrée.
D'accord, je viens de comprendre ce que vous voulez dire. Vous voulez vous immerger dans le tableau $_POST. Ensuite, utilisez des références progressives comme suit :
$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]