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

Langage PHP Discussion :

Comparaison chaine exacte [Fait]


Sujet :

Langage PHP

Vue hybride

yanchasp Comparaison chaine exacte 16/09/2008, 12h56
f.lam As tu tenter la fonction tout... 16/09/2008, 13h27
yanchasp oui ca ne change rien.... 16/09/2008, 13h35
f.lam Tu fais un explode de ta... 16/09/2008, 13h39
yanchasp Merci, par contre cela ne... 16/09/2008, 13h43
Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de yanchasp
    Inscrit en
    Décembre 2005
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 66
    Par défaut Comparaison chaine exacte
    J'ai fait un test, ca marche bien sauf quand j'ai un mot clé qui compose d'autres mots clé.
    J'ai utilisé "ireplace" pour la casse.

    Voici mon test
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $keywords = array("procede", "le", "Septieme art", "cinema");
    $NewKeywords = array("<b>procede</b>", "<b>le</b>", "<b><u>Septieme art</u></b>", "<b>cinema</b>");
    $Definition = "[abreviation de cinematographe] Procede qui permet d'enregistrer et de projeter sur un ecran des photographies animees. Septieme art. Salle ou l'on projette des films.";
     
    echo $LaDefinition = str_ireplace($keywords, $NewKeywords, $Definition);
    et voici ce que j'obtiens
    [abreviation de cinematographe] procede qui permet d'enregistrer et de projeter sur un ecran des photographies animees. Septieme art. Salle ou l'on projette des films.
    Par exemple pour le mot cle "le", il me le trouve dans "salle" et je ne veux surtout pas. (idem pour "cinema")
    J'ai donc essayé de mettre $keywords = array(" procede ", " le ");
    Mais ce n'est pas bon, car il peut y avoir des points, virgule etc.... mais pas de lettres par contre.

    Donc je pensais peut etre interdire autour les caracteres ascii des lettres et pas les exclamations et blancs.

    Avez vous une idée?

    Merci d'avance.

  2. #2
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2007
    Messages : 70
    Par défaut
    As tu tenter la fonction tout simple str_replace ?

  3. #3
    Membre confirmé Avatar de yanchasp
    Inscrit en
    Décembre 2005
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 66
    Par défaut
    Citation Envoyé par f.lam Voir le message
    As tu tenter la fonction tout simple str_replace ?
    oui ca ne change rien.
    J'utilise ireplace pour que ca fonctionne quand j'ai par exemple. "Test" et "test".

  4. #4
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2007
    Messages : 70
    Par défaut
    Tu fais un explode de ta chaine par le caractere espace :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     $data = explode ("",$chaine);
    tu boucles sur $data et remplaces tes occurences quand c'est necessaire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    $string = '';
    foreach ( $data as $key => $value )
    {
       if ( in_array($value,$keywords)) 
           $string .= '<b>'.$value.'</b>';
       else
           $string .= $value ;
    }
     
    echo $string ;
    Pour l'exception <u> souligné, tu peux faire un tableau de keywords de mots gras, un tableau de keywords de mot soulignés ...

  5. #5
    Membre confirmé Avatar de yanchasp
    Inscrit en
    Décembre 2005
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 66
    Par défaut
    Citation Envoyé par f.lam Voir le message
    Tu fais un explode de ta chaine par le caractere espace :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     $data = explode ("",$chaine);
    tu boucles sur $data et remplaces tes occurences quand c'est necessaire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    $string = '';
    foreach ( $data as $key => $value )
    {
       if ( in_array($value,$keywords)) 
           $string .= '<b>'.$value.'</b>';
       else
           $string .= $value ;
    }
     
    echo $string ;
    Pour l'exception <u> souligné, tu peux faire un tableau de keywords de mots gras, un tableau de keywords de mot soulignés ...
    Merci, par contre cela ne fonctionnera pas pour des expressions cles (pour les mots oui).
    Par exemple "septieme art" sera décomposé en "septieme" puis "art" non?
    Car dans ma base de mot clés il y a aussi des expressions clés.

  6. #6
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2007
    Messages : 70
    Par défaut
    Disons que la, les 2 mots seront bien en gras si "septieme" et "art" sont deux valeurs différentes du tableau $keywords, et c'est apparement le but, par contre, l'etat souligné va mettre 2 mots soulignés separement.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. rechercher une chaine exacte
    Par ybalauze dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 09/08/2007, 20h30
  2. Réponses: 3
    Dernier message: 12/05/2007, 09h53
  3. lecture fichier et comparaison chaines de caracteres
    Par john123 dans le forum Entrée/Sortie
    Réponses: 7
    Dernier message: 08/05/2007, 11h38
  4. Comparaison chaines de caractères
    Par mmarcoboss dans le forum C
    Réponses: 6
    Dernier message: 19/12/2006, 16h15
  5. Pb de comparaison chaine
    Par Celia1303 dans le forum Access
    Réponses: 5
    Dernier message: 05/05/2006, 16h45

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