Page 1 sur 1

Problèmes avec la fonction explode

Posté : 14 août 2012, 17:12
par Lenore
Bonjour à tous !

Je rencontre un problème dans mon programme. Celui-ci reçoit différents messages qu'il doit traiter. Ceux-ci sont de deux types:

1er type (en sachant que la seule ligne qui ne changera pas sera la dernière) :
0114, un lieu

10x, une alerte

Renvoyer ok pour acquitter
Ce qui m'intéresse ici est de récupérer la valeur "101" ou "102" etc... Mais j'ai du mal à y arriver avec un explode et j'ai beau tenter d'en combiner plusieurs, rien n'y fait...

Pti coup de main?

Merci d'avance !

Re: Problèmes avec la fonction explode

Posté : 14 août 2012, 17:34
par moogli
salut,

Qu'as tu fait ? (en terme de code).

les lignes vides sont elles dans les messages ?

ces messages proviennet d'où ?

sur le principe, avec ce que tu donne
1/ explode sur les sauts de lignes (suivant ton OS : \n, \r, \r\n)
2/ explode la virgule le résultat est dans l'index 0

@+

Re: Problèmes avec la fonction explode

Posté : 14 août 2012, 17:49
par Lenore
Ils proviennent d'un téléphone portable et les lignes vides sont effectivement présentes.
Je suis partie dans une autre idée qui pourrait convenir:

Code : Tout sélectionner

if (preg_match("/\bfumee\b/i",$message)) { $this->causeText="Smoke alert"; $this->prioriteProtocole=3; $this->etat=28; }
Sur le principe c'est bon non?

Re: Problèmes avec la fonction explode

Posté : 14 août 2012, 20:29
par sirakawa
Je dois être comme les angles, obtus, mais j'ai du mal à voir le rapport entre la question initiale et ça:
Ils proviennent d'un téléphone portable et les lignes vides sont effectivement présentes.
Je suis partie dans une autre idée qui pourrait convenir:

Code : Tout sélectionner

if (preg_match("/\bfumee\b/i",$message)) { $this->causeText="Smoke alert"; $this->prioriteProtocole=3; $this->etat=28; }
Sur le principe c'est bon non?
La solution se trouve dans la réponse de Moogli :
en exposant le message par les fins de ligne, on obtient un tableau de lignes.
pour savoir où en est, on peut balancer
$t_messages =  explode (PHP_EOL, $messages);
print_r ($t_messages);
Si ça ne marche pas, il va falloir identifier la fin de ligne (avec un éditeur de textes, par exemple)
Une fois que ça marche , on lit le tableau ligne par ligne en les passant par trim, et on explose par "," les lignes non vides...