Aller au contenu
  • Pas encore inscrit ?

    Pourquoi ne pas vous inscrire ? C'est simple, rapide et gratuit.
    Pour en savoir plus, lisez Les avantages de l'inscription... et la Charte de Zébulon.
    De plus, les messages que vous postez en tant qu'invité restent invisibles tant qu'un modérateur ne les a pas validés. Inscrivez-vous, ce sera un gain de temps pour tout le monde, vous, les helpeurs et les modérateurs ! :wink:

Comparaison mot en PHP


pitcat
 Share

Messages recommandés

Salut tous,

 

je cherche une solution pour comparer 2 textes, un texte sources avec quelques mots une dizaine et un autre texte plus long.

 

Le but étant d'afficher les mots présent dans le sources s'il sont présent dans l'autre texte aussi.

 

exemple sources :

 

bleu blanc rouge vert noir gris jaune

 

exemple texte :

 

j'aime bien le bleu blanc noir gris et moins les autres 

 

le résultant attendue serait :

 

bleu blanc noir gris

 

une idée ?

 

 

merci d'avance

 

 

Lien vers le commentaire
Partager sur d’autres sites

combine strtok() pour découper ta string en n mots et compare chaque token à ton tableau source avec la fonction in_array()

 

$string = "j'aime bien le bleu blanc noir gris et moins les autres";
$tab = array("bleu","blanc","rouge","vert","noir","gris","jaune");

$token= strtok(addslashes($string)," ");
while ($token !== FALSE) {

  if(in_array($token,$tab)) { echo $token."\n";}
  $token = strtok(" ");
}

Modifié par Greywolf
correction du code ligne4, rajout retour chariot ligne7
Lien vers le commentaire
Partager sur d’autres sites

merci Greywolf,

 

donc maintenant comment faire pour n'afficher que la première occurrence d'un mot et filtrer certain mot comme le, la etc?

 

 

Lien vers le commentaire
Partager sur d’autres sites

modifie alors ton tableau source afin que les mots cherchés soient les clés et associées à une valeur compteur

 

$tab = array("bleu" => 0,"blanc" => 0,"rouge" => 0,"vert" => 0,"noir" => 0,"gris" => 0,"jaune" => 0);

 

ensuite tu remplaces in_array() par la fonction array_key_exists()

si la clé existe, tu incrémentes le compteur et tu affiches le mot que si le compteur est égal à 1

if(array_key_exists($token,$tab)) {
   $tab[$token]++;
   if ($tab[$token]== 1) { echo $token."\n"; }
}

 

les autres mots sont automatiquement filtrés s'ils ne sont pas présents dans ton tableau source.

 

En fonction du besoin final, le tableau n'est peut-être pas forcément adapté, une structure objet ou un arbre le serait peut-être plus.

http://kevin.vanzonneveld.net/techblog/article/convert_anything_to_tree_structures_in_php/

Lien vers le commentaire
Partager sur d’autres sites

ok

 

par contr là ou ça se complique c'est que le $string est un champ de message d'une table sql et le $tab aussi.

 

je compare deux messages en fait du coup cela affiche rien grrr

 

 

Lien vers le commentaire
Partager sur d’autres sites

où est le problème?

 

au pire, tu utilises explode() pour convertir ta chaine de caractères récupérée depuis ton SGBD pour faire un array

Lien vers le commentaire
Partager sur d’autres sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

 Share

  • En ligne récemment   0 membre est en ligne

    Aucun utilisateur enregistré regarde cette page.

×
×
  • Créer...