Extractions dans une chaine avec un séparateur

Résolu
cs_hygieaa Messages postés 17 Date d'inscription vendredi 17 octobre 2003 Statut Membre Dernière intervention 11 mai 2010 - 5 mai 2010 à 14:38
cs_hygieaa Messages postés 17 Date d'inscription vendredi 17 octobre 2003 Statut Membre Dernière intervention 11 mai 2010 - 6 mai 2010 à 18:39
Bonjour à toutes et à tous..

Je suis particulièrement 'sec' en PHP alors j'ai besoin de ceux qui connaissent bien...

Jusqu'à maintenant j'ai réussi à me dépanner en glanant des codes source de ci de là.. mais pour cela je ne trouve rien..

Mon problème est le suivant..

Je possède un fichier dans lequel il existe une chaine de caractères(ce sont des noms) séparés par un ';'j'extraie cette chaîne et je l'appelle $listenoms Ex: "Dupont;Durand;Dulouis;)

Et je possède une autre chaîne, dans laquelle il peut figurer un des noms contenus dans la chaine $listenoms. Je l'appelle $message. EX: "Bonjour, je suis Mr Durand"

Je souhaite faire une boucle qui extrait un à un tous les noms de la chaîne $listenoms, vérifie si ce nom apparait dans la chaine $message et dans ce cas je fais quelque chose que j'appelle 'Action'

Dans le cas présent va faire un premier test avec 'Dupont' qui ne donne rien, puis un deuxieme test avec 'Durand' et là je fais 'Action'

Je me tiens à votre disposition, et je compte sur vous tous.. Merci alain

13 réponses

devil_may_cry Messages postés 194 Date d'inscription dimanche 18 mars 2007 Statut Membre Dernière intervention 11 juillet 2015
6 mai 2010 à 04:00
salut:
<?php
$listenom = "Dupont;Durand;Dulouis";
$str = "Bonjour, je suis Mr Durand" ;
//on transforme la chaine liste nom en tableau
$tablistenom = split(";",trim($listenom));

for ($i = 0; $i < count($tablistenom); $i++) {
    if( eregi("".$tablistenom[$i]."",$str) ) {
        //chaine trouver ton traitement ici
    } else {
  //chaine nom trouver ton autre traitement
}
}
?>

j'espere que ceci te vas
3
cs_hygieaa Messages postés 17 Date d'inscription vendredi 17 octobre 2003 Statut Membre Dernière intervention 11 mai 2010
6 mai 2010 à 08:18
Bonjour Devil_May_Cry

Merci 1000 fois d'avoir répondu si vite!!!

Je teste ce soir ce PHP, et je pense qu'il n'y aura pas de problème

Je te dis KOI(comme dans les ch'ti), puisque je suis du nord..

Cordialement Alain
0
cs_hygieaa Messages postés 17 Date d'inscription vendredi 17 octobre 2003 Statut Membre Dernière intervention 11 mai 2010
6 mai 2010 à 09:03
Bonjour, comme je suis curieux.. je me suis empressé de tester..

J'ai rencontré un premier probleme que j'ai corrigé de suite, $listenom n'avait pas de 'S' à la fin j'en ai donc mis un

2eme PB que je ne sais résoudre

Voici la réponse du serveur...
Apparemment le tableau est vide..!!!

Warning: eregi(): REG_EMPTY

Et là je ne sais pas!!!

Merci.. alain
0
devil_may_cry Messages postés 194 Date d'inscription dimanche 18 mars 2007 Statut Membre Dernière intervention 11 juillet 2015
6 mai 2010 à 09:11
bonjour est-ce que t'a copier exactement le code parce que chez moi ca marche a merveille ?
mais en effet il y'a une autre chose dans le fichier dans lequel se trouve Dupond;Durant etc.. le dernier element ne doit pas etre suivit de ";"
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_hygieaa Messages postés 17 Date d'inscription vendredi 17 octobre 2003 Statut Membre Dernière intervention 11 mai 2010
6 mai 2010 à 09:28
Woui pour le code..

Mais moi j'ai un ';' à la fin..

Alors je le retire et te dit ce qu'il en est à++ alain
0
cs_hygieaa Messages postés 17 Date d'inscription vendredi 17 octobre 2003 Statut Membre Dernière intervention 11 mai 2010
6 mai 2010 à 09:42
Bon... ce qu'il en est..
Je n'ai plus de message d'erreur...C'est dejà ça

Mais le PHP ne fonctionne pas, il ne trouve apparemment pas l'ocurence...

Et là je ne sais pas.... J'ai tout vérifié..
0
devil_may_cry Messages postés 194 Date d'inscription dimanche 18 mars 2007 Statut Membre Dernière intervention 11 juillet 2015
6 mai 2010 à 09:46
poste les ligne de code qui traite cette partie
0
cs_hygieaa Messages postés 17 Date d'inscription vendredi 17 octobre 2003 Statut Membre Dernière intervention 11 mai 2010
6 mai 2010 à 09:47
Bonjour

Ne cherche pas je crois avoir trouvé!!

Dans ton PHP le contenu à tester s'appelle $str et dans mon PHP il s'appelle $msg

JE TESTE ET TE DIT CE QU'IL EN EST A++ ALAIN
0
cs_hygieaa Messages postés 17 Date d'inscription vendredi 17 octobre 2003 Statut Membre Dernière intervention 11 mai 2010
6 mai 2010 à 09:51
Bingo...

c'était ça..le coup de $str et $msg

Je me disais quand même sur 3 lignes de PHP..

1000 Fois merci, Tout fonctionne parfaitement

Amitiés alain
0
devil_may_cry Messages postés 194 Date d'inscription dimanche 18 mars 2007 Statut Membre Dernière intervention 11 juillet 2015
6 mai 2010 à 09:54
ok bonne journé
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
6 mai 2010 à 17:15
Salut Alin "ch'ti" du Nord et Devil,

Juste de passage :
La fonction eregi est dépréciée, elle génère une erreur à partir de PHP 5.3 et sera sans doute supprimée à l'avenir.
Il est préférable d'utiliser preg_match, mais l'emploi d'une regex pour ce genre de chose est un peu superflu.

Pourquoi ne pas faire simplement :
$str = 'Bonjour, je suis Mr Durand';
$aPattern = explode(';', file_get_contents('Ton_Fichier'));
foreach ($aPattern as $v) {
    if (stripos($str, $v)) {
        // action
    }
}


Cordialement,

Kohntark -
0
devil_may_cry Messages postés 194 Date d'inscription dimanche 18 mars 2007 Statut Membre Dernière intervention 11 juillet 2015
6 mai 2010 à 17:33
efficace comme methode
0
cs_hygieaa Messages postés 17 Date d'inscription vendredi 17 octobre 2003 Statut Membre Dernière intervention 11 mai 2010
6 mai 2010 à 18:39
Merci bien vivement,

Je teste ce soir..

A++ alain pour des nouvelles du PHP
0
Rejoignez-nous