|
Publicité | ||||||||||||||||||||||
|
|
#1 |
|
Membre actif
![]() |
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 :
<?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); ?> Merci d'avance pour votre aide ! |
|
|
|
|
|
#2 |
![]() Date d'inscription: mai 2002
Localisation: Juste là
Âge: 32
Messages: 894
|
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 |
|
|
|
|
![]() |
||
Comparer deux textes
|
||
| Outils de la discussion | |
|
|