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

  FORUM HardWare.fr
  Programmation
  PHP

  [resolu] problème de regex

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[resolu] problème de regex

n°1457475
Yagmoth
Fanboy
Posté le 15-10-2006 à 12:45:34  profilanswer
 

Alors j'ai un petit souci. En ce moment je concois un projet d'étiqueteur lexicographique, et pour le moment je créé la partie d'apprentissage du programme, donc grosso modo, ca prend un texte en le décomposant, et ca l'affiche, pour chaque terme l'utilisateur rentre le type lexical correspondant, puis c'est mémorisé en base de donnée afin d'établir des règles ultérieurement. Mon problème actuel est la décomposition correcte des termes du texte (par exemple séparer les mots de fin de phrase du point, etc.). Pour l'instant pas énormément de souci, mais j'en ai un à présent avec ce qui gère les double guillemets simples (bizarrement aucun problème avec les guillements doubles...). Donc voici deux codes, celui qui sépare les doubles guillemets simples, celui d'un qui s'occupe de la gestion des virgules, avec un exemple :
 
Exemple pris au départ : Bonjour à tous ! Je m'apelle Fabrice, surnommé 'plop'. => enregistré dans le fichier $fichier donc en un seul tenant pour le moment.
 

Code :
  1. for($i=0;$i<count($fichier);$i++) {
  2. if (eregi("'",$fichier[$i]) && strlen($fichier[$i])>1) {
  3.  if (substr_count($fichier[$i],"'" )==1 OR substr_count($fichier[$i],"'" )>2) { //s'il n'y a que des apostrophes
  4.  $tab3=split("'",$fichier[$i]); // on découpe  
  5.  for($x=0;$x<count($tab3)-1;$x++) {
  6.  $tab3[$x]=$tab3[$x].'\''; //on ajoute le délimiteur qui a sauté lors du split
  7.  }
  8.  $tab1=array_slice($fichier,0,"$i-1" ); //on découpe le reste du tableau pour insérer celui créé
  9.  $tab2=array_slice($fichier,$i+1); //idem
  10.  $fichier=array_merge($tab1,$tab3,$tab2); //on fusionne
  11.  unset($tab3); //par sécurité, on vire $tab3
  12.  }
  13.  elseif (substr_count($fichier[$i],"'" )==2) { //dans le cas où il y a des guillemets
  14.  eregi('(\')(.*)(\')(.*)',$fichier[$i],$regs); // on enregistre dans $regs la décomposition
  15.  $tab3[0]=$regs[1];
  16.  $tab3[1]=$regs[2];
  17.  $tab3[2]=$regs[3];
  18.  if ($regs[4]!='') {$tab3[3]=$regs[4];}
  19.  $tab1=array_slice($fichier,0,"$i-1" ); //on découpe le reste du tableau pour inséré celui créé
  20.  $tab2=array_slice($fichier,$i+1); //idem
  21.  $fichier=array_merge($tab1,$tab3,$tab2); //on fusionne
  22.  unset($tab3);
  23. }
  24. }
  25. }


 
Après passage de ce bout de code (et juste avant d'arriver au traitement de la virgule), avec un print_r($fichier), on obtient :
 

Code :
  1. Array ( [0] => Bonjour [1] => à [2] => tous [3] => ! [4] => Je [5] => m' [6] => appelle [7] => Fabrice, [8] => surnommé [9] => ' [10] => plop [11] => ' [12] => . )


 
Donc on voit bien que le découpage de " 'plop' " a été fait correctement, il reste maintenant à faire celui de "Fabrice,", voici le code :
 

Code :
  1. for ($i=0;$i<count($fichier);$i++) {
  2. if (eregi(",", $fichier[$i]) && strlen($fichier[$i])>1 ) {
  3.  eregi("(.*)(,)(.*)",$fichier[$i],$regs);
  4.  echo $regs[3];
  5.  if (!is_numeric($regs[3]) && !is_numeric($reg[1])) { //on vérifie qu'il n'y a pas de nombre avant et après la virgule pour éviter de découper des nombres
  6.  $tab3[0]=$regs[1];
  7.  $tab3[1]=$regs[2];
  8.  if ($regs[3]!='') {$tab3[2]=$regs[3];} //s'il y a quelque chose après la virgule de non numérique, on le sépare
  9.  $tab1=array_slice($fichier,0,"$i-1" );
  10.  $tab2=array_slice($fichier,$i+1);
  11.  $fichier=array_merge($tab1,$tab3,$tab2);
  12.  unset($tab3);
  13.  }
  14. }
  15. }


 
Et donc ca me décompose bien Fabrice... mais ca me rajoute des items qui n'ont rien à faire là, voilà le résultat :
 

Code :
  1. Array ( [0] => Bonjour [1] => à [2] => tous [3] => ! [4] => Je [5] => m' [6] => appelle [7] => Fabrice [8] => , [9] => ' [10] => . [11] => surnommé [12] => ' [13] => plop [14] => ' [15] => . )


 
Autrement dit : Bonjour à tous ! Je m'appelle Fabrice, '. surnommé 'plop'.
 
Donc si quelqu'un a une idée, je suis preneur ;)


Message édité par Yagmoth le 15-10-2006 à 18:14:45
mood
Publicité
Posté le 15-10-2006 à 12:45:34  profilanswer
 

n°1457597
Yagmoth
Fanboy
Posté le 15-10-2006 à 18:14:25  profilanswer
 

Bon et ben en fait ca marche très bien  :pt1cable:  
 
Je sais pas, ptet une erreur de l'interpréteur, un problème du navigateur ou que sais-je... après quelques heures d'absences et sans toucher au script le problème à disparu  :love: .


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

  [resolu] problème de regex

 

Sujets relatifs
probleme avec une video en flashune erreur en C que je n'arrive pas à résoudre !
probleme de connexion mysql / phpprobleme de session
[PHP5;MySQL4.1] probleme utilisation avec IEprobleme de resolution
problème de caractères spéciauxProblème affichage bannières TradeDoubler et autres sites...
[Résolu] Probleme avec un insertHTML sur WYSIWYG[résolu]probleme entre fonction et regex
Plus de sujets relatifs à : [resolu] problème de regex


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