Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
697 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  retrouver mot en php avec expression reguliere

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

retrouver mot en php avec expression reguliere

n°1992623
cyrildu07
Posté le 12-05-2010 à 15:03:20  profilanswer
 

Bonjour  voila j'ai un fichier texte ou plutôt une variable contenant le texte ci dessous j'aimerai pourvoir faire des recherche dans ce texte par exemple si je tape "n" que j'ai tout  les valeurs commençant par "n" ainsi que leur numero de telephone  
 
il faudrait donc que j'arrive a extraire le(s) mot(s) que je cherche  
[{"value":"nom","id":"numtel"},{"value":"nom2","id":"num tel"}etc... ]
 
Merci de votre aide

mood
Publicité
Posté le 12-05-2010 à 15:03:20  profilanswer
 

n°1992626
stealth35
Posté le 12-05-2010 à 15:10:23  profilanswer
 

c'est du json ca, pas besoin de regexp un array_filter (ou walk) suffira


Message édité par stealth35 le 12-05-2010 à 15:15:03
n°1992627
cyrildu07
Posté le 12-05-2010 à 15:16:43  profilanswer
 

oui c'est du json tu peut m'en dire plus sur array_filter et walk  s'il te plait
 
[edit] j'ai essayer avec array_filter mais il me met comme erreur que ce n'est pas un tableau


Message édité par cyrildu07 le 12-05-2010 à 15:25:08
n°1992628
stealth35
Posté le 12-05-2010 à 15:26:02  profilanswer
 

normal faut faire un coup de json_decode

n°1992631
stealth35
Posté le 12-05-2010 à 15:35:40  profilanswer
 

sinon avec juste une boucle

 
Code :
  1. $str = '[{"value":"nom","id":"numtel"},{"value":"nom2","id":"num tel"},{"value":"pat","id":"num tel"}]';
  2. $data     = json_decode($str);
  3. $search  = 'p';    
  4.     
  5. foreach($data as $key => $item)
  6. {
  7.     if($item->value[0] !== $search)
  8.     {
  9.         unset($data[$key]);
  10.     }
  11. }
  12.         
  13. print_r($data);


Message édité par stealth35 le 12-05-2010 à 15:37:12
n°1992635
cyrildu07
Posté le 12-05-2010 à 15:37:57  profilanswer
 

merci de prendre du temps pour répondre
dans la doc pour le json_decode il parle de recursion pour le troisieme paramètre faut mettre quoi ?
 
[edit] j'ai opter pour le tableau finalment mais l'encodage ne se fait pas tout a fait bien :
  la dessous le array  
Array ( [1] => stdClass Object ( [value] => allez [id] => num tel ) )  
 
ensuite apres encodage :
 
{"1":{"value":"allez","id":"num tel"}}
 
il me faudrait obtenir ca :  
 
[{"value":"allez","id":"num tel"}]


Message édité par cyrildu07 le 12-05-2010 à 15:51:47
n°1992648
stealth35
Posté le 12-05-2010 à 15:52:19  profilanswer
 

pas besoin dans prendre compte, sinon en regexp ca donnerais un truc du genre :

 
Code :
  1. $str     = '[{"value":"nom","id":"numtel"},{"value":"nom2","id":"num tel"},{"value":"pat","id":"num tel"}]';
  2. preg_match_all('/({"\w+":"(n[\w\s]+)","\w+":"([\w\s]+)"})/ui', $str, $matches, PREG_SET_ORDER);    
  3. print_r($matches);

Message cité 1 fois
Message édité par stealth35 le 12-05-2010 à 15:52:25
n°1992654
cyrildu07
Posté le 12-05-2010 à 15:59:28  profilanswer
 

stealth35 a écrit :

pas besoin dans prendre compte, sinon en regexp ca donnerais un truc du genre :
 

Code :
  1. $str     = '[{"value":"nom","id":"numtel"},{"value":"nom2","id":"num tel"},{"value":"pat","id":"num tel"}]';
  2. preg_match_all('/({"\w+":"(n[\w\s]+)","\w+":"([\w\s]+)"})/ui', $str, $matches, PREG_SET_ORDER);    
  3. print_r($matches);



 
 
juste est-ce que tu peut m'aider pour le json-encode pourquoi est-ce que ce n'est pas tout a fait sous la bonne forme ?

n°1992660
stealth35
Posté le 12-05-2010 à 16:06:01  profilanswer
 

ta pas besoin de json_encode, mais de json_decode, je t'ai mis l'exemple plus haut

n°1992663
cyrildu07
Posté le 12-05-2010 à 16:10:13  profilanswer
 

stealth35 a écrit :

ta pas besoin de json_encode, mais de json_decode, je t'ai mis l'exemple plus haut


 
 
avec le code que tu m'a mis j'obtient ca soit un tableau
 
 Array ( [0] => stdClass Object ( [value] => perdu [id] => numtel ) [2] => stdClass Object ( [value] => pat [id] => num tel ) )  
 
sauf que voila je ne peut rien faire avec ca il me le faut sous cette forme mais avec les resultats  

[{"value":"allez","id":"num tel"}{"agence":"dsfsfef"},{"agence":"zefezfezzf"},]  

 
c'est pour ca que je fesait un encode pour remettre le resultat sous la bonne forme

mood
Publicité
Posté le 12-05-2010 à 16:10:13  profilanswer
 

n°1992664
stealth35
Posté le 12-05-2010 à 16:15:31  profilanswer
 

je vois
 

Code :
  1. echo json_encode(array_values($data));

n°1992667
cyrildu07
Posté le 12-05-2010 à 16:18:43  profilanswer
 

super ca marche seul dernier souci enfin j'espere si je met plus de deux lettre ca ne m'affiche rien pourquoi je doit pouvoir taper le mot entier

n°1992670
stealth35
Posté le 12-05-2010 à 16:24:06  profilanswer
 

dans la condition tu fais

Code :
  1. if(strpos($item->value, $search) !== 0)

n°1992671
cyrildu07
Posté le 12-05-2010 à 16:32:57  profilanswer
 

eh bien tu m'a sauver je sais je suis chiant mais je ne met pas de lettre et aussi pour qu'il ne fasse pas la difference en majuscule et minuscule j'ai une erreur une solution sinon tant pis tu m'a bien aidé et je t'en remercie


Message édité par cyrildu07 le 12-05-2010 à 16:39:56
n°1992674
stealth35
Posté le 12-05-2010 à 16:41:52  profilanswer
 

avec stripos pour les majuscule, pour le reste, tu fais un condition pour éviter le foreach

Message cité 1 fois
Message édité par stealth35 le 12-05-2010 à 16:43:24
n°1992675
cyrildu07
Posté le 12-05-2010 à 16:44:38  profilanswer
 

stealth35 a écrit :

avec stripos pour les majuscule, pour le reste, tu fais un condition pour éviter le foreach


 
 
dernier truc apres je t'embête plus dans le cas ou je ne veut pas mettre de lettre ??

n°1992677
stealth35
Posté le 12-05-2010 à 16:52:44  profilanswer
 

je t'ai dis tu fais une condition pour eviter le foreach

n°1992679
cyrildu07
Posté le 12-05-2010 à 16:57:15  profilanswer
 

stealth35 a écrit :

je t'ai dis tu fais une condition pour eviter le foreach


 
desolé j'avais pas lu plus loin  :sweat:  et sinon si je veux etendre ma recherche au numer de tel doit-je recopier tout le code ? une deuxiem fois ou y'a une possibilité sur le même code

n°1992682
stealth35
Posté le 12-05-2010 à 17:05:55  profilanswer
 

pareil tu rajoutes une condition avec un ||

n°1992685
cyrildu07
Posté le 12-05-2010 à 17:12:52  profilanswer
 

Un truc du genre :  

Code :
  1. foreach($data as $key => $item)
  2.    {
  3.    
  4.    if(stripos($item->value, $search || $item->id,search ) !== 0)
  5.     {
  6.      unset($data[$key]);
  7.     }
  8.    }
  9.   
  10.    echo json_encode(array_values($data)

)
 
mais marche pas j'ai le droit a ca :

stripos() expects parameter 3 to be long, string given in

n°1992688
stealth35
Posté le 12-05-2010 à 17:19:03  profilanswer
 

normale ta mis la condition dans les parametre, en gros faut faire 2 stripos

n°1992691
cyrildu07
Posté le 12-05-2010 à 17:21:40  profilanswer
 

alors comme  ca mais ca ne fonctionne pas non plus  
 
if(stripos($item->value, $search) !== 0  || stripos($item->id, $search)!== 0)

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  retrouver mot en php avec expression reguliere

 

Sujets relatifs
[KSH] Find : iname + expression régulière ? - RESOLU -Vérifier si une expression est entre deux balises
Tester une variable avec des expressions régulière [DOS][RESOLU] [MYSQL] Retrouver mot de passe d'un user
expression régulière en javascriptexpression reguliere java / ant
expression régulière 
Plus de sujets relatifs à : retrouver mot en php avec expression reguliere


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR