IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de donn�es Discussion :

Les regex avec des mots compos�s


Sujet :

PHP & Base de donn�es

  1. #1
    Membre confirm� Avatar de Halex78
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    Mars 2007
    Messages
    75
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 33
    Localisation : France

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels

    Informations forums :
    Inscription : Mars 2007
    Messages : 75
    Par d�faut Les regex avec des mots compos�s
    Bonsoir, j'ai un probl�me concernant les regex avec php :
    j'ai une table "glossaire" contenant des mots avec des d�finitions : un champs "mot" et un champs "definition".

    j'utilise str_ireplace pour remplacer les mots d'un texte qui sont pr�sents dans cette table par des liens ouvrant une popup dans laquelle apparait la d�finition du terme.
    Seulement dans ma table (mysql), il y a des termes qui diff�rent dans ce genre :
    "Naskyrie" et "Zones de Naskyrie"... Evidemment ca le fait pour de nombreux mots et ca ne se limite souvent pas qu'� deux exemples comme ceux ci (parfois une dizaine...

    Je ne suis pas tr�s � l'aise avec les regex, mais je n'h�site pas non plus � faire des recherches seulement l�, je ne sais vraiment pas comment proc�der...

    Donc voil�, merci de bien vouloir m'�clairer sur ce sujet.

  2. #2
    Membre confirm�
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    85
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 85
    Par d�faut
    J'�tais en train de t'�crire le code, mais j'ai �t� un peu pr�somptueux... je n'ai pas assez de temps � te consacrer. Par contre, j'ai beaucoup appris sur les expressions r�guli�res avec cette doc, o� tu devrais trouver ton bonheur.

    En fait, c'�tait [ftp://ftp-developpez.com/cyberzoide/java/regex.pdf], mais ancienne version. La nouvelle semble plus compl�te. (ben non, c'est pour Java celle-ci!)

    ben c'�tait pas celle-l� non plus, c'�tait bien le premier lien que je connaissait, mais une ancienne version.

  3. #3
    Membre confirm� Avatar de Halex78
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    Mars 2007
    Messages
    75
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 33
    Localisation : France

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels

    Informations forums :
    Inscription : Mars 2007
    Messages : 75
    Par d�faut
    Bonsoir, merci pour la r�ponse et ces liens pour la doc (j'ai �t� sur expreg.com), mon probl�me est surtout que je ne vois pas quelle logique adopter.
    Tu n'as pas cod� car tu as dit que tu n'as pas le temps, cela veut dire que tu vais une id�e de comment t'y prendre... Si c'est le cas, peux tu me dire comment ?

  4. #4
    Membre confirm�
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    85
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 85
    Par d�faut
    Si tu insiste, j'ai ce bout de code, mais il marche pas et je pense pas t'orienter sur la bonne voix. Surtout que tu devais d�j� avoir quelque chose du m�me genre...
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    $aGlossaire = array(array('mot'=>'Jeannot', 'definition'=>'le pote'),
      array('mot'=>'Jeannot Lapin', 'definition'=>'le lapin'));
    $strLigne = 'Ben Jeannot est mon pote et Jeannot Lapin est celui de ma fille';
    $aTrouv = array();
     
    arsort($aGlossaire);
    foreach ($aGlossaire as $key => $aDefMot) {
      if (stripos($strLigne, $aDefMot['mot']) !== FALSE) {
        $bBreak = FALSE;
        foreach ($aTrouve as $val) {
          if (stripos($val, $aDefMot['mot']) !== FALSE) {
            $bBreak = TRUE;
            break;
          }
        }
        if ($bBreak) break;
        $aTrouve[] = $aDefMot['mot'];
        $strLigne = preg_replace(
    '/'.$aDefMot['mot'].'/',
    '<a style="color:#F00;" title="'.$aDefMot['definition'].'">'.$aDefMot['mot'].'</a>',
    $strLigne);
      }
    }
     
    echo '<br />strLigne = '.$strLigne;
    Il faudrait peut-�tre dans un premier temps rajouter un id aux balises a trait�e: <a id="idTraite" ...>...</a>. Ensuite, il faudrait de ne pas traiter la cha�ne d'un seul coup, mais, dans les cas particulier qui nous int�resse, d'extraire les cha�nes entre les idTraite et de les traiter l'une apr�s l'autre.



    Oui, �a complique bien les choses... mais pour l'instant, je ne vois pas d'autre solutions... mais c'est un joli exercice. Bonne chance � toi!

  5. #5
    Membre confirm� Avatar de Halex78
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    Mars 2007
    Messages
    75
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 33
    Localisation : France

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels

    Informations forums :
    Inscription : Mars 2007
    Messages : 75
    Par d�faut
    Bonsoir, je viens de regarder ta m�thode... Ben j'avais pas fait comme ca (j'y ai r�fl�chi trois ou quatre jours jusqu'� aujourd'hui o� je viens de voir le post).
    J'ai en fait remplac� TOUTES les entr�es du glossaire par des mots sans espaces
    Jeannot lapin => Jeannotlapin, et je recherche ensuite les mots avec des espaces aux extr�mit�s ce qui fait que jeannot ne peut �tre trouv� dans jeannotlapin, et je remplace ainsi ces mots par des liens avec les mots normaux (avec espaces)
    Voil� ca fonctionne � peu de choses pr�s (je veux un truc qui interdise la pr�sence de lettre autour de ce mot: ca marche pour le caract�re qui vient juste apr�s le mot mais pas le caract�re qui vient juste avant : aurais tu une id�e ?)

Discussions similaires

  1. [Regex] Difficult� avec des mots accentu�s
    Par p1xl_01 dans le forum Langage
    R�ponses: 2
    Dernier message: 17/08/2011, 16h51
  2. REGEX - Rep�rer des mots avec des lettres accentu�es
    Par rambc dans le forum G�n�ral Python
    R�ponses: 2
    Dernier message: 16/07/2011, 15h33
  3. R�ponses: 18
    Dernier message: 28/08/2006, 23h07
  4. [VBA-A]Amusons nous un peu avec des mots.
    Par Miss Ti dans le forum Access
    R�ponses: 6
    Dernier message: 24/07/2006, 21h13
  5. [C#] Calcul sur les dates avec des DateTimePicker
    Par alizee971 dans le forum Windows Forms
    R�ponses: 10
    Dernier message: 02/04/2005, 17h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo