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:

Messages recommandés

Posté(e)

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

 

 

Posté(e) (modifié)

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
Posté(e)

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?

 

 

Posté(e)

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/

Posté(e)

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

 

 

Posté(e)

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

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.
Remarque : votre message nécessitera l’approbation d’un modérateur avant de pouvoir être 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.

  • En ligne récemment   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
×
×
  • Créer...