A voir également:
- Analyse chaine carac PHP
- Alert php ✓ - Forum PHP
- Analyse et reparation du lecteur c ✓ - Forum Windows 10
- Header php - Astuces et Solutions
- Undefined index php - Astuces et Solutions
- Retour a la ligne php ✓ - Forum PHP
5 réponses
kilian
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 524
14 oct. 2008 à 14:37
14 oct. 2008 à 14:37
Hhm, ben je crois pas que ça existe non...
bonjour,
soit $chaine1
$tc1 = explode(' ',$chaine1);
$tc1[0] prend pour valeur la première partie avant le premier espace
$tc1[1] prend pour valeur la deuxième partie après le premier espace et avant le second
etc
pareil avec $chaine2 (dans $tc2)
puis ensuite comparer le contenu de chaque poste des tableaux
i.e.
if ($tc1[0]===$tc2[0])
etc etc
soit $chaine1
$tc1 = explode(' ',$chaine1);
$tc1[0] prend pour valeur la première partie avant le premier espace
$tc1[1] prend pour valeur la deuxième partie après le premier espace et avant le second
etc
pareil avec $chaine2 (dans $tc2)
puis ensuite comparer le contenu de chaque poste des tableaux
i.e.
if ($tc1[0]===$tc2[0])
etc etc
Merci,
Entre temps j'avais faire un truc... C'était pas forcément ce qu'il y a de mieux, mais en gros l'idée était de mettre en forme les deux chaîne de caractère puis de comparer avec strcasecmp combien de caractères sont différents. Une fois ce résultat obtenu, je le compare à la moiter du nombre de caractères de la plus grande des deux chaîne. Si celui-ci est plus petit ou égale, je considère que les deux chaînes sont égale. Sinon non...
Exemple :
chaîne1 = "test "
chaîne2 = "tests"
1- Je commence par mettre en forme mes champs :
chaîne1 = "TEST"
chaîne2 = "TESTS"
2- J'applique strcasecmp pour trouver les différences. Celui-ci me revoit 1.
3- Je compare 1 au résultat de strlen de la plus grande des deux chaîne qui est 5.
4- Je peux voir que 1 <= 5.
5- je considère que mes chaînes sont égales.
Pioufffff !
Bon c'est pas terrible, c'est un peu laborieux, mais dans mon cas ça marche plutôt pas mal....
Voila le code... :
Entre temps j'avais faire un truc... C'était pas forcément ce qu'il y a de mieux, mais en gros l'idée était de mettre en forme les deux chaîne de caractère puis de comparer avec strcasecmp combien de caractères sont différents. Une fois ce résultat obtenu, je le compare à la moiter du nombre de caractères de la plus grande des deux chaîne. Si celui-ci est plus petit ou égale, je considère que les deux chaînes sont égale. Sinon non...
Exemple :
chaîne1 = "test "
chaîne2 = "tests"
1- Je commence par mettre en forme mes champs :
chaîne1 = "TEST"
chaîne2 = "TESTS"
2- J'applique strcasecmp pour trouver les différences. Celui-ci me revoit 1.
3- Je compare 1 au résultat de strlen de la plus grande des deux chaîne qui est 5.
4- Je peux voir que 1 <= 5.
5- je considère que mes chaînes sont égales.
Pioufffff !
Bon c'est pas terrible, c'est un peu laborieux, mais dans mon cas ça marche plutôt pas mal....
Voila le code... :
function compareChaine($chaine1, $chaine2)
{
echo "Chaîne 1 : " . $chaine1 . ".<br>";
echo "Chaîne 2 : " . $chaine2 . ".<br>";
$remp1 = strtr($chaine1,'àáâãäçèéêëìíîïñòóôõöùúûüýÿÀÁÂÃÄÇÈÉÊËÌÍÎÏÑÒÓÔÕÖÙÚÛÜÝ','aaaaaceeeeiiiinooooouuuuyyAAAAACEEEEIIIINOOOOOUUUUY');
$remp1 = str_replace(' ', '', $remp1);
$remp1 = str_replace(',', '', $remp1);
$remp1 = str_replace('-', '', $remp1);
$remp1 = str_replace('\'', '', $remp1);
$remp2 = strtr($chaine2,'àáâãäçèéêëìíîïñòóôõöùúûüýÿÀÁÂÃÄÇÈÉÊËÌÍÎÏÑÒÓÔÕÖÙÚÛÜÝ','aaaaaceeeeiiiinooooouuuuyyAAAAACEEEEIIIINOOOOOUUUUY');
$remp2 = str_replace(' ', '', $remp2);
$remp2 = str_replace(',', '', $remp2);
$remp2 = str_replace('-', '', $remp2);
$remp2 = str_replace('\'', '', $remp2);
$maj1 = mb_strtoupper($remp1);
$maj2 = mb_strtoupper($remp2);
$diff = strcasecmp($maj1, $maj2);
$nb1 = strlen($maj1);
$nb2 = strlen($maj2);
echo "Remplace les caractères spéciaux dans chaîne 1: " . $remp1 . ".<br>";
echo "Remplace les caractères spéciaux dans chaîne 2 : " . $remp2 . ".<br>";
echo "Mettre en majuscule chaîne 1 : " . $maj1 . "<br>";
echo "Mettre en majuscule chaîne 2: " . $maj2 . "<br>";
echo "Nombre de caractères dans la chaîne 1 : " . $nb1 . ".<br>";
echo "Nombre de caractères dans la chaîne 2 : " . $nb2 . ".<br>";
echo "Nombre de caractères différents entre les deux chaînes : " . -$diff . ".<br>";
if($nb1 > $nb2)
{
$result = ($nb1/2)+1;
echo "La chaîne 1 est plus grande que la chaîne 2<br>";
if(-$diff <= $result)
{
echo "Result = " . $result . " Soit > " . -$diff . " Les chaînes sont égales.<br>";
}
elseif(-$diff > $result)
{
echo "Result = " . $result . " Soit <= " . -$diff . " Les chaînes ne sont pas égales.<br>";
}
}
elseif($nb2 > $nb1)
{
$result = ($nb2/2)+1;
echo "La chaîne 2 est plus grande que la chaîne 1<br>";
if(-$diff <= $result)
{
echo "Result = " . $result . " Soit > " . -$diff . " Les chaînes sont égales.<br>";
}
elseif(-$diff > $result)
{
echo "Result = " . $result . " Soit <= " . -$diff . " Les chaînes ne sont pas égales.<br>";
}
}
}
Mikey_UFC
Messages postés
312
Date d'inscription
jeudi 8 mars 2007
Statut
Membre
Dernière intervention
2 août 2010
1
14 oct. 2008 à 16:55
14 oct. 2008 à 16:55
Ca ne veut pas dire par hasard que ces adresses sont les mêmes pour toi :
7 rue des rosiers 93000 Paris
9 rue des rosiers 93000 Paris
2 rue des rosiers 69000 Lyon
7 rue des rosiers 93000 Paris
9 rue des rosiers 93000 Paris
2 rue des rosiers 69000 Lyon
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question