[php] recherche d'un mot 'exact' ds une chaine

recherche d'un mot 'exact' ds une chaine [php] - PHP - Programmation

Marsh Posté le 24-08-2005 à 11:36:07    

Bonjour a tous,
 
j'ai par exemple ceci :
 
"paris-gare"
"paris-centre"
"paris"
etc..
 
je cherche le mot "paris" et je voudrais obtenir seulement la chaine de caractere qui contient exactement le mot "paris"  
Dans l'exemple ca me retourne donc juste "paris" et non  "paris-gare" et "paris-centre"
 
Pour le moment j'utilise ceci 'ereg($value, $chaine);'
 
Merci de votre aide  

Reply

Marsh Posté le 24-08-2005 à 11:36:07   

Reply

Marsh Posté le 24-08-2005 à 11:54:22    

heu vu que tu connais le mot que tu veux chercher, pourquoi vouloir obtenir une chaine qui le contient ???

Reply

Marsh Posté le 24-08-2005 à 11:59:22    

je veux extraire des lignes d'un fichier csv
 
je parcours chaque ligne une par une et qd je vois le moit recherché je retire toute la ligne. Mon exemple prend "paris" mais il n'y a pas que ca
 
Si par exemple je mets "paris-centre" a rechercher je n'aurais que la ligne du texte contenant exactement "paris-centre" qui est retourné

Reply

Marsh Posté le 24-08-2005 à 12:40:20    

Reply

Marsh Posté le 24-08-2005 à 13:43:04    

ok Sielfried mais a quoi corespond tous ca ?
 
je mets ca comme ca : "ereg ("(?<!\-)paris(?!\-)", $chaine)" ??

Reply

Marsh Posté le 24-08-2005 à 14:10:47    

En fait ça dépend ce que tu veux. Ton exemple sur le post de base est pas clair.
 
T'as une chaîne et tu veux savoir si elle contient un mot donné, c'est ça ?


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 24-08-2005 à 14:24:04    

erwan551 a écrit :

je mets ca comme ca : "ereg ("(?<!\-)paris(?!\-)", $chaine)" ??


ereg ne gère pas les assertions, donc utilise preg
 
en gros la regexp de silfried va chercher les occurences de "paris" qui ne sont pas précédées ni suivies d'un tiret.

Reply

Marsh Posté le 24-08-2005 à 14:25:40    

en fait,  j'ai plein de lignes dans un fichier
 
par exemple :
 
Paris;fdgd;dgfdgr;rgeg;grggg
Rennes;gerg;ge;egehge;ege
Paris-centre;sgr;rgre;egrg;egrgver
Marseille;sdgs;ergr;egreg;grere
Tours;zegtgr;efs;grre;gegreg
 
Ce fichier s'appelle 'donnee.txt'
 
un utilisateur peut choisir via un menu déroulant comprenant : Paris, Rennes, Paris-centre, Marseille, Tours.
 
S'il choisit "paris" je veux faire ressortir dans un fichier seulement la ligne "Paris;fdgd;dgfdgr;rgeg;grggg" et non pas la ligne "Paris-centre;sgr;rgre;egrg;egrgver"
 
En faisant un 'ereg ($ville, $fichier)', j'obtiens les deux lignes conteant Paris donc c'est pas bon !

Reply

Marsh Posté le 24-08-2005 à 14:28:12    

Ben pour chaque ligne tu passes un coup de

Code :
  1. preg_match('#\b(?<!\-)'.$mot.'(?!\-)\b#', $chaine);

et ça devrait le faire. Si ça renvoie 1 c'est une ligne qui convient, sinon 0.


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 24-08-2005 à 14:34:21    

ou  

Code :
  1. if (preg_match_all('#^'.$mot.';.*$#mi', $str, $match))
  2. print_r($match);


tu auras dans le tableau $match toutes les lignes trouvées, pas besoin de parser ligne par ligne

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed