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 :

Comparer deux textes


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 270
    Points : 163
    Points
    163
    Par défaut Comparer deux textes
    Bonjour à tous,

    J'ai une fonction qui compare deux textes (mot à mot), mais un point d'interrogation semble poser problème, du fait que ce soit un "mot d'une seule lettre" peut-être.

    Voici le code complet (ça pourra ptet servir à d'autres ) :

    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
     
    <?php
    function diff($id1, $id2)
      {
     
      $contenu1 = htmlspecialchars($id1);
      $explode1 = explode("\n", $contenu1);
     
      $contenu2 = htmlspecialchars($id2);
      $explode2 = explode("\n", $contenu2);
     
      $compte1 = count($explode1);
      $compte2 = count($explode2);
      if ($compte1 < $compte2)
        {
        $comptebase = $compte2;
        $manquant = $compte2-$compte1;
        for ($i=0;$i<$manquant;$i++)
          {
          array_push($explode1, "");
          }
        }
      elseif ($compte2 < $compte1)
        {
        $comptebase = $compte1;
        $manquant = $compte1-$compte2;
        for ($i=0;$i<$manquant;$i++)
          {
          array_push($explode2, "");
          }
        }
      else { $comptebase = $compte1; }
     
      echo "<fieldset><legend>Effacé entre la nouvelle et l'ancienne version :</legend>";
     
      $texte = "";
      for ($i=0; $i<$comptebase; $i++)
        {
        $exp = explode(" ", $explode1[$i]);
        $exl = explode(" ", $explode2[$i]);
        foreach ($exp as $clep => $motp)
          {
          $motp = str_replace("/", "\/", $motp);
          $motp = str_replace("[", "\[", $motp);
     
          if (preg_grep("/(\[)?(http:\/\/)?".$motp."(\])?/i", $exl))
            {
            $texte .= $motp." ";
            }
          else
            {
            $texte .= "<s>".$motp."</s> ";
            }
          }
        }
      $texte = str_replace("\/", "/", $texte);
      $texte = str_replace("\[", "[", $texte);
      echo nl2br($texte);
     
      echo "</fieldset><br>";
      echo "<fieldset><legend>Ajouté entre la nouvelle et l'ancienne version</legend>";
      $texte = "";
      for ($i=0; $i<$comptebase; $i++)
        {
        $exp = explode(" ", $explode1[$i]);
        $exl = explode(" ", $explode2[$i]);
        foreach ($exl as $clel => $motl)
          {
          $motl = str_replace("/", "\/", $motl);
          $motl = str_replace("[", "\[", $motl);
    //      $motl = str_replace("?", "\?", $motl);
     
          if (preg_grep("/".$motl."/i", $explode1))
            {
            $texte .= $motl." ";
            }
          else
            {
            $texte .= "<b>".$motl."</b> ";
            }
          }
        }
      $texte = str_replace("\/", "/", $texte);
      $texte = str_replace("\[", "[", $texte);
      echo nl2br($texte);
     
      echo "</fieldset>";
     
      }
     
      $texte1="
      Salut ça va ! ?
      Moi je suis content d'être là, pas vous ?
      Youpi ya !";
      $texte2="
      Salut ça va ?
      Moi je ne suis pas content d'être là, pas vous ?";
      diff($texte1,$texte2);
    ?>
    Vous pouvez tester le code, et allez voir l'erreur "Warning". Cette fonction ne nécessite aucune fonction externe, tout est là.

    Merci d'avance pour votre aide !

  2. #2
    Rédactrice
    Avatar de xave
    Femme Profil pro
    Développeur Web
    Inscrit en
    Mai 2002
    Messages
    871
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 46
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2002
    Messages : 871
    Points : 1 094
    Points
    1 094
    Par défaut
    Et l'inverse avec l'option preg_grep_invert donne quoi?

Discussions similaires

  1. fichier texte : comparer deux chaines accentuées
    Par rvfranck dans le forum Langage
    Réponses: 4
    Dernier message: 30/10/2008, 14h27
  2. Lire et comparer deux fichiers texte
    Par Ballim dans le forum MATLAB
    Réponses: 6
    Dernier message: 10/10/2008, 09h59
  3. Comparer deux fichiers texte
    Par turbo_chess dans le forum Général Java
    Réponses: 4
    Dernier message: 18/09/2008, 14h23
  4. Comparer deux fichier texte
    Par imsse dans le forum C#
    Réponses: 7
    Dernier message: 29/06/2007, 19h24
  5. Comparer deux textes
    Par musmus dans le forum Delphi
    Réponses: 6
    Dernier message: 26/02/2007, 10h49

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