Bonjour,
Voila j'ai une chaîne de ce type :
'"label":"IS Luxembourg","value":"2","label":"IS Belgique","value":"11","label":"IS Pays Bas","value":"15"'
J'aimerais extraire le chiffre derriere value
J'ai essayé avec des str_replace, mais le label est aléatoire.
Merci pour votre aide.
Essaye en ajoutant des accolades autour, puis tu fait un
Json_decode($Tonstring,True)
Si cette feinte fonctionne tu devrais te retrouver avec un array
en fait le format de ma chaine est ce que je reçois d'un formulaire (flexdatalist).
Merci, je n'avais pas pensé au json :/
Salut,
Tu peux le faire via une expresssion régulière qui récupère le '15'.
Ou sinon, tu peux essayer d'extraire le chiffre 'value' en parcourant la chaîne mais en partant de la fin (Donc sans passer par la valeur aléatoire).
Salut,
Ouais mais il y a plein de 'value',
moi aussi j'au du mal à comprendre ce que tu veux cid5420
Tu veux un tableau de cette sorte ?
$values[0] = 2;
$values[1] = 11;
$values[2] = 15;
...
Si dans ta chaine il n'y a jamais de chiffres dans tes 'label',
tu peux utiliser preg_match_all()
$my_string = '"label":"IS Luxembourg","value":"2","label":"IS Belgique","value":"11","label":"IS Pays Bas","value":"15"';
preg_match_all('/[0-9]+/', $my_string, $matches);
echo '<pre>';
print_r($matches[0]);
echo '</pre>';
S'il PEUT y avoir des chiffres dans tes 'label',
alors il faut "matcher" : les suites de chiffres qui sont entourées de guillemets,
puis tu enlevera les guillemets avec str_replace()
Sinon,
Est-ce que tu es obligé d'avoir ce format là de chaine ?
je pensais à un truc dans ce style qui serait plus facile à exploiter ensuite :
$my_string = 'IS Luxembourg:2,IS Belgique:11,IS Pays Bas:15';
avec un explode
de "," tu as tous les "couple",
et sur chaque couple, un explode
de ":" te donne les valeures.
(on peut arriver au même principe si dans ta chaine actuelle, tu remplaces une virgule sur 2 par un point-virgule,
mais ça resterai peut-être un peu trop "verbeu")