Comment arriver simplement à un tableau qui contient :
'article' => 477
'rubrique' => 201
'branche' => 25
?
Je peux faire un explode pour avoir
0 => 'article=477'
1 => 'rubrique=201'
2 => 'branche=25'
Mais je n'ai pas de fonction magique pour la suite (sauf à un code plus
complet qui détecte le '=', et patati...)
Si Php dispose de fonction permettant de le faire plus facilement en
remplaçant le '=' de la chaine de départ, je peux le changer, c'est une
chaine de configuration que je peux changer.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Didier
Le 02/05/2020 à 16:04, Stéphane Santon a écrit :
Bonjour, J'ai une variable texte qui contient : $filtre= 'articleG7,rubrique 1,branche%'; Comment arriver simplement à un tableau qui contient : 'article' => 477 'rubrique' => 201 'branche' => 25 ? Je peux faire un explode pour avoir 0 => 'articleG7' 1 => 'rubrique 1' 2 => 'branche%' Mais je n'ai pas de fonction magique pour la suite (sauf à un code plus complet qui détecte le '=', et patati...) Si Php dispose de fonction permettant de le faire plus facilement en remplaçant le '=' de la chaine de départ, je peux le changer, c'est une chaine de configuration que je peux changer. Merci
Bjr, à mon petit niveau en php, je ne vois qu'un deuxième tableau construit dans une boucle foreach sur le premier : $tab1=explode(',',$filtre); $tab2=array(); foreach($tab1 as $chaine) { $tabchaine=explode('=',$chaine); $tab2[$tabchaine[0]]=tabchaine[1]; } Didier.
Le 02/05/2020 à 16:04, Stéphane Santon a écrit :
Bonjour,
J'ai une variable texte qui contient :
$filtre= 'articleG7,rubrique 1,branche%';
Comment arriver simplement à un tableau qui contient :
'article' => 477
'rubrique' => 201
'branche' => 25
?
Je peux faire un explode pour avoir
0 => 'articleG7'
1 => 'rubrique 1'
2 => 'branche%'
Mais je n'ai pas de fonction magique pour la suite (sauf à un code plus
complet qui détecte le '=', et patati...)
Si Php dispose de fonction permettant de le faire plus facilement en
remplaçant le '=' de la chaine de départ, je peux le changer, c'est une
chaine de configuration que je peux changer.
Merci
Bjr,
à mon petit niveau en php, je ne vois qu'un deuxième tableau construit
dans une boucle foreach sur le premier :
$tab1=explode(',',$filtre);
$tab2=array();
foreach($tab1 as $chaine)
{
$tabchaine=explode('=',$chaine);
$tab2[$tabchaine[0]]=tabchaine[1];
}
Bonjour, J'ai une variable texte qui contient : $filtre= 'articleG7,rubrique 1,branche%'; Comment arriver simplement à un tableau qui contient : 'article' => 477 'rubrique' => 201 'branche' => 25 ? Je peux faire un explode pour avoir 0 => 'articleG7' 1 => 'rubrique 1' 2 => 'branche%' Mais je n'ai pas de fonction magique pour la suite (sauf à un code plus complet qui détecte le '=', et patati...) Si Php dispose de fonction permettant de le faire plus facilement en remplaçant le '=' de la chaine de départ, je peux le changer, c'est une chaine de configuration que je peux changer. Merci
Bjr, à mon petit niveau en php, je ne vois qu'un deuxième tableau construit dans une boucle foreach sur le premier : $tab1=explode(',',$filtre); $tab2=array(); foreach($tab1 as $chaine) { $tabchaine=explode('=',$chaine); $tab2[$tabchaine[0]]=tabchaine[1]; } Didier.
Stéphane Santon
Bonjour, Didier a écrit :
Le 02/05/2020 à 16:04, Stéphane Santon a écrit :
$filtre= 'articleG7,rubrique 1,branche%'; Comment arriver simplement à un tableau qui contient : 'article' => 477 'rubrique' => 201 'branche' => 25
à mon petit niveau en php, je ne vois qu'un deuxième tableau construit dans une boucle foreach sur le premier : $tab1=explode(',',$filtre); $tab2=array(); foreach($tab1 as $chaine) { $tabchaine=explode('=',$chaine); $tab2[$tabchaine[0]]=tabchaine[1]; } Didier.
Merci pour le code. Je cherchais une fonction évoluée de php qui fasse ça. J'ai pensé ensuite à voir si Explode fonctionnait directement sur des tableaux, mais non... -- Stéphane BTS Electrotechnique *** http://www.bts-electrotechnique.fr En alternance : http://www.ufa-palissy.fr Domotique : http://www.ecodomotique.fr
Bonjour,
Didier a écrit :
Le 02/05/2020 à 16:04, Stéphane Santon a écrit :
$filtre= 'articleG7,rubrique 1,branche%';
Comment arriver simplement à un tableau qui contient :
'article' => 477
'rubrique' => 201
'branche' => 25
à mon petit niveau en php, je ne vois qu'un deuxième tableau construit dans
une boucle foreach sur le premier :
$tab1=explode(',',$filtre);
$tab2=array();
foreach($tab1 as $chaine)
{
$tabchaine=explode('=',$chaine);
$tab2[$tabchaine[0]]=tabchaine[1];
}
Didier.
Merci pour le code.
Je cherchais une fonction évoluée de php qui fasse ça.
J'ai pensé ensuite à voir si Explode fonctionnait directement sur des
tableaux, mais non...
$filtre= 'articleG7,rubrique 1,branche%'; Comment arriver simplement à un tableau qui contient : 'article' => 477 'rubrique' => 201 'branche' => 25
à mon petit niveau en php, je ne vois qu'un deuxième tableau construit dans une boucle foreach sur le premier : $tab1=explode(',',$filtre); $tab2=array(); foreach($tab1 as $chaine) { $tabchaine=explode('=',$chaine); $tab2[$tabchaine[0]]=tabchaine[1]; } Didier.
Merci pour le code. Je cherchais une fonction évoluée de php qui fasse ça. J'ai pensé ensuite à voir si Explode fonctionnait directement sur des tableaux, mais non... -- Stéphane BTS Electrotechnique *** http://www.bts-electrotechnique.fr En alternance : http://www.ufa-palissy.fr Domotique : http://www.ecodomotique.fr
Olivier Miakinen
Bonjour, Le 02/05/2020 16:04, Stéphane Santon a écrit :
J'ai une variable texte qui contient : $filtre= 'articleG7,rubrique 1,branche%'; Comment arriver simplement à un tableau qui contient : 'article' => 477 'rubrique' => 201 'branche' => 25 ?
Je propose la chose suivante (attention, non testé) : preg_match_all("/([a-z]+)=([0-9]+)/", $filtre, $matches); $resultat = array_combine($matches[1], $matches[2]); Il faudra bien sûr adapter la regexp si les clés peuvent contenir d'autres caractères que les lettres minuscules ASCII [a-z] ou si les valeurs peuvent contenir autre chose que des chiffres [0-9]. Faire aussi attention au fait que les valeurs risquent d'être de type string même si elles ne contiennent que des chiffres. Voir éventuellement la fonction array_map. Cordialement, -- Olivier Miakinen
Bonjour,
Le 02/05/2020 16:04, Stéphane Santon a écrit :
J'ai une variable texte qui contient :
$filtre= 'articleG7,rubrique 1,branche%';
Comment arriver simplement à un tableau qui contient :
'article' => 477
'rubrique' => 201
'branche' => 25
?
Je propose la chose suivante (attention, non testé) :
Il faudra bien sûr adapter la regexp si les clés peuvent contenir d'autres
caractères que les lettres minuscules ASCII [a-z] ou si les valeurs peuvent
contenir autre chose que des chiffres [0-9].
Faire aussi attention au fait que les valeurs risquent d'être de type string
même si elles ne contiennent que des chiffres. Voir éventuellement la fonction
array_map.
Bonjour, Le 02/05/2020 16:04, Stéphane Santon a écrit :
J'ai une variable texte qui contient : $filtre= 'articleG7,rubrique 1,branche%'; Comment arriver simplement à un tableau qui contient : 'article' => 477 'rubrique' => 201 'branche' => 25 ?
Je propose la chose suivante (attention, non testé) : preg_match_all("/([a-z]+)=([0-9]+)/", $filtre, $matches); $resultat = array_combine($matches[1], $matches[2]); Il faudra bien sûr adapter la regexp si les clés peuvent contenir d'autres caractères que les lettres minuscules ASCII [a-z] ou si les valeurs peuvent contenir autre chose que des chiffres [0-9]. Faire aussi attention au fait que les valeurs risquent d'être de type string même si elles ne contiennent que des chiffres. Voir éventuellement la fonction array_map. Cordialement, -- Olivier Miakinen
Olivier Miakinen
[copie et suivi vers fr.comp.usenet.lecteurs-de-news] Le 02/05/2020 21:30, Stéphane Santon avait dans son champ Subject :
C'est un bug connu de la version 1.08.03 de MesNews. Quand il rencontre un signe = suivi de deux caractères qui sont de l'hexadécimal mais avec une lettre a-f en minuscule, il devrait soit considérer que c'est légal et équivalent aux lettres en majuscule (ce que font tous les autres logiciels), soit considérer que c'est illégal et refuser de décoder le reste. Or il ne fait ni l'un ni l'autre : il considère que c'est légal mais il ne décode pas l'hexadécimal, ce qui fait perdre l'information. Heureusement ça a été corrigé dans la version 1.08.06. -- Olivier Miakinen
[copie et suivi vers fr.comp.usenet.lecteurs-de-news]
Le 02/05/2020 21:30, Stéphane Santon avait dans son champ Subject :
C'est un bug connu de la version 1.08.03 de MesNews. Quand il rencontre
un signe = suivi de deux caractères qui sont de l'hexadécimal mais avec
une lettre a-f en minuscule, il devrait soit considérer que c'est légal
et équivalent aux lettres en majuscule (ce que font tous les autres
logiciels), soit considérer que c'est illégal et refuser de décoder le
reste. Or il ne fait ni l'un ni l'autre : il considère que c'est légal
mais il ne décode pas l'hexadécimal, ce qui fait perdre l'information.
Heureusement ça a été corrigé dans la version 1.08.06.
C'est un bug connu de la version 1.08.03 de MesNews. Quand il rencontre un signe = suivi de deux caractères qui sont de l'hexadécimal mais avec une lettre a-f en minuscule, il devrait soit considérer que c'est légal et équivalent aux lettres en majuscule (ce que font tous les autres logiciels), soit considérer que c'est illégal et refuser de décoder le reste. Or il ne fait ni l'un ni l'autre : il considère que c'est légal mais il ne décode pas l'hexadécimal, ce qui fait perdre l'information. Heureusement ça a été corrigé dans la version 1.08.06. -- Olivier Miakinen