Précédent   Forum des professionnels en informatique > PHP > Langage > Fonctions
Fonctions Forum d'entraide sur les fonctions PHP. Avant de poster -> FAQ fonctions et Sources diverses
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 06/10/2011, 20h47   #1
Membre Expert
 
Avatar de Anduriel
 
Homme
Étudiant
Inscription : février 2004
Messages : 2 168
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : février 2004
Messages : 2 168
Points : 1 277
Points : 1 277
Par défaut Différences dans un texte

Bonjour,

J'aimerais pouvoir détecter les différences dans un texte.
Par exemple:

Citation:
Ceci est mon texte initial
et
Citation:
Ceci est mon beau texte initial mais modifié
J'aimerais surligner "beau", "mais modifier".

Je ne vois pas trop comment m'y prendre, j'ai pensé à faire lettre par lettre, et dès que j'ai une différence je surligne jusqu'à... je ne sais pas quand.
Sinon j'ai voulu tenter un explode " " et comparer un élément du tableau avec le suivant mais dans le cas du "beau", il va dire que "texte" diffère de "initial" (position 4).

Comment feriez-vous?

Merci
Anduriel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/10/2011, 21h28   #2
Expert Confirmé
 
Avatar de rawsrc
 
Homme Martin
Dev indep
Inscription : mars 2004
Messages : 1 461
Détails du profil
Informations personnelles :
Nom : Homme Martin
Âge : 35
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Dev indep

Informations forums :
Inscription : mars 2004
Messages : 1 461
Points : 2 551
Points : 2 551
Envoyer un message via Skype™ à rawsrc
Bonsoir,

Essaye avec array_diff :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
<?php
$a = 'Ceci est mon texte initial';
$b = 'Ceci est mon beau texte initial mais modifié';
 
$c = explode(' ', $a);
$d = explode(' ', $b);
 
$e = array_diff($c, $d);
$f = array_diff($d, $c);
 
$final = array_merge($e, $f); //$final = array('beau', 'mais', 'modifié')
?>
__________________
# Dans la Création, tout est permis mais tout n'est pas utile...
rawsrc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/10/2011, 12h21   #3
Membre Expert
 
Avatar de Anduriel
 
Homme
Étudiant
Inscription : février 2004
Messages : 2 168
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : février 2004
Messages : 2 168
Points : 1 277
Points : 1 277
Merci rawsrc

J'avais vu cette fonction mais imaginons que ma phrase modifiée soit:

Citation:
Mais ceci est mon beau texte initial mais modifié
Je vais me retrouver avec deux mais, sans pouvoir les replacer dans la phrase (pour ensuite surligner aux bons endroits)?

EDIT: Ah non en fait il compte bien les deux mais Je vais voir merci!
Anduriel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/10/2011, 17h30   #4
Membre Expert
 
Avatar de Anduriel
 
Homme
Étudiant
Inscription : février 2004
Messages : 2 168
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : février 2004
Messages : 2 168
Points : 1 277
Points : 1 277
En fait c'est bien ça:

$a = 'Mon ceci est mon texte initial';
$b = 'Mais mon ceci est le beau texte modifié';

Il ne voit que 1 "mon", alors qu'il y en a deux...
Anduriel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/10/2011, 22h56   #5
Expert Confirmé
 
Avatar de rawsrc
 
Homme Martin
Dev indep
Inscription : mars 2004
Messages : 1 461
Détails du profil
Informations personnelles :
Nom : Homme Martin
Âge : 35
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Dev indep

Informations forums :
Inscription : mars 2004
Messages : 1 461
Points : 2 551
Points : 2 551
Envoyer un message via Skype™ à rawsrc
array_diff() c'est le moyen le plus simple pour comparer tes textes. Moyen limité, certes, mais ce que tu veux nécessite de développer un analyseur syntaxique et crois-moi c'est beaucoup plus complexe.
__________________
# Dans la Création, tout est permis mais tout n'est pas utile...
rawsrc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/10/2011, 10h55   #6
Expert Confirmé
 
Avatar de Séb.
 
Inscription : mars 2005
Messages : 2 823
Détails du profil
Informations personnelles :
Âge : 34
Localisation : France

Informations professionnelles :
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mars 2005
Messages : 2 823
Points : 3 454
Points : 3 454
Quelques pistes :
http://www.phpclasses.org/search.htm...ff&go_search=1
http://fr.php.net/manual/fr/function...tring-diff.php
__________________
Un problème exposé clairement est déjà à moitié résolu
Keep It Smart and Simple
Séb. 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 +2. Il est actuellement 01h07.


 
 
 
 
Partenaires

Hébergement Web