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 actif
 
Date d'inscription: mai 2004
Messages: 180
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 :
 
<?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
Vieux 10/11/2006, 11h54   #2
Rédactrice
 
Avatar de xave
 
Date d'inscription: mai 2002
Localisation: Juste là
Âge: 32
Messages: 894
Par défaut

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
NEWS PHPFAQ PHPCours PHPSources PHPLivres PHPScripts PHPOutils PHPComparatifsZend Framework

Réponse Proposer ce sujet en actualité

Précédent   Forum des professionnels en informatique > PHP > Langage > Regex



Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non



Fuseau horaire GMT +1. Il est actuellement 19h46.


Vos questions techniques : forum d'entraide PHP - Publiez vos articles, tutoriels et cours
et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones
Nous contacter - Hébergement - Participez - Copyright © 2000-2010 www.developpez.com - Legal informations.