Je dois effectuer un affichage en clair de données retournées par un serveur
via une requete effectuée par curl. Le serveur en question renvoie des
données à la suite sans retour à la ligne selon le format suivant :
<code de la donnée>,"<valeur>"
Exemple du retour du serveur :
0,"valeur1"498,"valeur2"4021-1,"valeur3"4021-2,"valeur4"99,"valeur4"
Pour cela je fait une expression régulière comme suit :
preg_match_all ('/([0-9]+),"([^"]*)"/' ,$this->result ,$this->result_tmp);
Du coup j'ai un souci avec les champs dont les noms sont comme 4021-1 et
4021-2 qui correspondent à n éléments du code 4021...
Comment formuler mon expression régulière pour prendre cela en compte ?
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
Olivier Miakinen
Exemple du retour du serveur : 0,"valeur1"498,"valeur2"4021-1,"valeur3"4021-2,"valeur4"99,"valeur4"
Pour cela je fait une expression régulière comme suit : preg_match_all ('/([0-9]+),"([^"]*)"/' ,$this->result ,$this->result_tmp);
Du coup j'ai un souci avec les champs dont les noms sont comme 4021-1 et 4021-2 qui correspondent à n éléments du code 4021...
C'est normal. Ton [0-9] accepte les chiffres, mais pas le trait d'union. Tu peux le remplacer par [0-9-] ou par [-0-9] (explication : le trait d'union perd le rôle spécial qu'il a dans 0-9 ou a-Z quand il est placé au début ou à la fin du contenu de [...]). Tu peux aussi le remplacer par [^,] pour accepter tout caractère sauf la virgule qui est le délimiteur de champ (la même astuce est employée pour la valeur entre guillemets).
Donc : '/([^,]+),"([^"]*)"/'
-- Olivier Miakinen Non, monsieur le juge, je vous le jure : jamais je n'ai cité Bruxelles dans ma signature.
Exemple du retour du serveur :
0,"valeur1"498,"valeur2"4021-1,"valeur3"4021-2,"valeur4"99,"valeur4"
Pour cela je fait une expression régulière comme suit :
preg_match_all ('/([0-9]+),"([^"]*)"/' ,$this->result ,$this->result_tmp);
Du coup j'ai un souci avec les champs dont les noms sont comme 4021-1 et
4021-2 qui correspondent à n éléments du code 4021...
C'est normal. Ton [0-9] accepte les chiffres, mais pas le trait d'union.
Tu peux le remplacer par [0-9-] ou par [-0-9] (explication : le trait
d'union perd le rôle spécial qu'il a dans 0-9 ou a-Z quand il est placé
au début ou à la fin du contenu de [...]). Tu peux aussi le remplacer
par [^,] pour accepter tout caractère sauf la virgule qui est le
délimiteur de champ (la même astuce est employée pour la valeur entre
guillemets).
Donc : '/([^,]+),"([^"]*)"/'
--
Olivier Miakinen
Non, monsieur le juge, je vous le jure : jamais je n'ai cité
Bruxelles dans ma signature.
Exemple du retour du serveur : 0,"valeur1"498,"valeur2"4021-1,"valeur3"4021-2,"valeur4"99,"valeur4"
Pour cela je fait une expression régulière comme suit : preg_match_all ('/([0-9]+),"([^"]*)"/' ,$this->result ,$this->result_tmp);
Du coup j'ai un souci avec les champs dont les noms sont comme 4021-1 et 4021-2 qui correspondent à n éléments du code 4021...
C'est normal. Ton [0-9] accepte les chiffres, mais pas le trait d'union. Tu peux le remplacer par [0-9-] ou par [-0-9] (explication : le trait d'union perd le rôle spécial qu'il a dans 0-9 ou a-Z quand il est placé au début ou à la fin du contenu de [...]). Tu peux aussi le remplacer par [^,] pour accepter tout caractère sauf la virgule qui est le délimiteur de champ (la même astuce est employée pour la valeur entre guillemets).
Donc : '/([^,]+),"([^"]*)"/'
-- Olivier Miakinen Non, monsieur le juge, je vous le jure : jamais je n'ai cité Bruxelles dans ma signature.
David
Merci beaucoup ! Décidément, je n'arriverais jamais à m'y faire aux expressions régulières... :-))))
Merci beaucoup !
Décidément, je n'arriverais jamais à m'y faire aux expressions régulières...
:-))))