Comment puis-je analyser la sortie de var_dump
en PHP pour créer un tableau?Comment créer un tableau à partir de la sortie de var_dump en PHP?
Répondre
Utilisez var_export si vous voulez une représentation qui est également le code PHP valide
$a = array (1, 2, array ("a", "b", "c"));
$dump=var_export($a, true);
echo $dump;
affichera
array (
0 => 1,
1 => 2,
2 =>
array (
0 => 'a',
1 => 'b',
2 => 'c',
),
)
Pour transformer ce retour dans un tableau, vous pouvez utiliser eval, par exemple
eval("\$foo=$dump;");
var_dump($foo);
Je ne sais pas pourquoi vous voulez faire bien. Si vous souhaitez stocker une structure de données PHP quelque part et ensuite la recréer plus tard, consultez serialize() et unserialize() qui sont plus adaptés à cette tâche.
C'est faux. Il ne produit pas de tableau, il fait seulement $ foo une chaîne, qui est égale à $ dump, qui est aussi une chaîne, qui devrait être analysée. –
Ce n'est vraiment pas faux. Essayez-le. http://codepad.viper-7.com/7ATm27 –
Non, cela ne fonctionne pas. Lorsque je prends la chaîne outputtet, commente tes deux premières lignes et mets $ dump à cette chaîne sortie (flashe html ou text), j'obtiens une erreur de syntaxe. Il est donc différent d'utiliser une variable var_export-ed et de n'avoir qu'une chaîne var_dump-ed. – Seika85
Vous ne pouvez pas. var_dump
sort simplement du texte mais ne renvoie rien.
Qu'en est-il de celui ayant une chaîne de var_dump via Goold ancienne copie de pâte? (Je connais des gens qui copient coller d'énormes var_dumps dans des fichiers texte et m'envoient ces fichiers texte.) – Seika85
@ Seika85: Vous pouvez leur dire d'utiliser la bufferisation de sortie pour obtenir le résultat sous forme de chaîne. Mais pour les besoins de cette question, c'est toujours un «non» car ils ont demandé comment obtenir un tableau. – Joey
Peut-être que vous cherchez var_export
qui vous donnera une expression PHP valide de la valeur transmise.
vient d'éditer votre réponse en pensant qu'elle était à moi! Pardon! –
Peut-être que vous essayez de convertir un objet en tableau?
var_export
crée le code PHP, que vous pouvez exécuter via le eval
.
Mais je me demande, quelle est votre idée?
J'ai eu un problème similaire: un script à long terme produit à la fin un vardump de grand tableau. J'ai dû l'analyser en quelque sorte pour d'autres analyses. Ma solution était comme ceci:
cat log.stats |
sed 's/\[//g' |
sed 's/\]//g' |
sed -r 's/int\(([0-9]+)\)/\1,/g' |
sed 's/\}/\),/g' |
sed -r 's/array\([0-9]+\) \{/array(/g' >
log.stats.php
bonne réponse, le seul problème est si vous avez des valeurs contiennent des chaînes ... donc ils ne sont pas enveloppés par '' – WonderLand
Certainement c'était juste un hack rapide qui a fonctionné pour mon scénario spécifique. En général, var_dump est horrible à analyser, donc chaque fois que possible, j'utilise autre chose (principalement json_encode). Vous avez raison, les cordes causeraient des problèmes. D'énormes problèmes si contiennent des barres obliques ou des citations. Modéré si contient quelque chose qui lui-même ressemble à une sortie de vidage var (=>, [8] ou int (12)) :) – qbolec
'var_dump (array ($ var))'? – Fragsworth