Problèmes avec la fonction explode

Lenore
Invité n'ayant pas de compte PHPfrance

14 août 2012, 17:12

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 !

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

14 août 2012, 17:34

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

@+
Il en faut peu pour être heureux ......

Lenore
Invité n'ayant pas de compte PHPfrance

14 août 2012, 17:49

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?

Mammouth du PHP | 2278 Messages

14 août 2012, 20:29

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...
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD