Comment convertir une chaîne de ce type en tableau associatif en PHP?Convertir une chaîne en un tableau associatif
key1="value" key2="2nd value" key3="3rd value"
Comment convertir une chaîne de ce type en tableau associatif en PHP?Convertir une chaîne en un tableau associatif
key1="value" key2="2nd value" key3="3rd value"
Vous pouvez utiliser une expression régulière pour obtenir les paires clé/valeur:
preg_match_all('/(\w+)="([^"]*)"/', $str, $matches);
Mais ce serait juste obtenir les paires clé complète/valeur. Les entrées invalides comme key=value"
ne seraient pas reconnues. Un analyseur ferait mieux.
EDIT: La réponse de Gumbo est une meilleure solution à cela.
Cela vous convient-il?
Supposons que votre chaîne est dans une variable comme ceci:
$string = 'key1="value" key2="2nd value" key3="3rd value"';
Première:
$array = explode('" ', $string);
vous avez maintenant
array(0 => 'key1="value', 1=>'key2="2nd value', 2=>'key3="3rd value');
Puis:
$result = array();
foreach ($array as $chunk) {
$chunk = explode('="', $chunk);
$result[$chunk[0]] = $chunk[1];
}
En utilisant l'expression régulière suggérée par Gumbo je suis venu avec ce qui suit pour convertir la chaîne donnée à un tableau associatif:
$s = 'key1="value" key2="2nd value" key3="3rd value"';
$n = preg_match_all('/(\w+)="([^"]*)"/', $s, $matches);
for($i=0; $i<$n; $i++)
{
$params[$matches[1][$i]] = $matches[2][$i];
}
Je me demandais si vous aviez des commentaires.
ayant écrit ceci, je préfère la réponse de gumbo! – benlumley
Qu'en est-il de 'key =" value "' ou 'key =" = "'? – Gumbo
totalement - comme je l'ai dit, préférez le vôtre! – benlumley