Précédent   Forum des professionnels en informatique > PHP > Langage > Regex
Regex Forum d'entraide sur les expressions rationnelles PHP. Avant de poster -> FAQ regex, Cours de regex et Sources de regex
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
Vieux 10/11/2006, 11h44   #1
Membre habitué
 
Inscription : mai 2004
Messages : 203
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 203
Points : 102
Points : 102
Envoyer un message via AIM à Romalafrite Envoyer un message via MSN à Romalafrite
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 :
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 !
Romalafrite est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/11/2006, 11h54   #2
Rédactrice
 
Avatar de xave
 
Inscription : mai 2002
Messages : 860
Détails du profil
Informations personnelles :
Âge : 34

Informations forums :
Inscription : mai 2002
Messages : 860
Points : 824
Points : 824
Et l'inverse avec l'option preg_grep_invert donne quoi?
__________________
Les règles du forum
Cours et tutoriels php
Développements web (CSS, (X)HTML,javascript, etc...)
Cours et tutoriels MySQL
Tutoriels Ajax
Initiation à PHP-GTK1


Il n'est point de bonheur sans liberté, ni de liberté sans courage. Péricles
xave est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +1. Il est actuellement 00h28.


 
 
 
 
Partenaires

Hébergement Web