malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 30 nov. 2005 à 08:48
Je n'ai pas dit que le code était pourri ;-)
guill76
Messages postés193Date d'inscriptionmercredi 24 août 2005StatutMembreDernière intervention 3 juin 2016 30 nov. 2005 à 01:05
ben ouais , comme ça c'est plutôt mieux, mais j'en avais besoin dans un cas précis quand les 2 chaines débutaient par le premier paramètre et je ne connaissais pas cette utilisation de substr_replace.Donc je m'étais arrêter à ce cas.
C'est vrai que 'chaine différentielle' est peut être une mauvaise dénomination. Enfin bon, voilà la fonction est postée et des fois y'a pire comme code.
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 29 nov. 2005 à 09:29
Bref, ta fonction ne fonctionne que si la chaîne $comparestr débute par $refstr.
Quel intérêt alors par rapport à une fonction comme strstr() ? A part que tu renvoie 1 ou -1 selon si les chaînes sont égales ou ne sont pas comparables ?
echo substr (strstr ('salut les gars', 'salut'), strlen('salut'));
fait la même chose que ta fonction.
Et même, si on suit ton raisonnement, faire un vrai différentiel entre 2 chaînes (on peut même ajouter la gestion de la casse facilement) :
Ou alors, je n'ai pas pigé le véritable but de ta source ;-)
guill76
Messages postés193Date d'inscriptionmercredi 24 août 2005StatutMembreDernière intervention 3 juin 2016 26 nov. 2005 à 12:34
Ok c'est vrai je vais modifier
Naixn
Messages postés455Date d'inscriptionmardi 17 septembre 2002StatutMembreDernière intervention22 juillet 2007 26 nov. 2005 à 12:30
Je sais bien, c'est bien pour ça que dans mon for, je le fais à l'initialisation :)
FhX
Messages postés2350Date d'inscriptionmercredi 13 octobre 2004StatutMembreDernière intervention18 avril 20153 26 nov. 2005 à 12:29
Nan, c'est parce que quand tu utilises count() dans une boucle, il va te recompter à chaque fois ton tableau.
Donc, tu le fais avant :)
Naixn
Messages postés455Date d'inscriptionmardi 17 septembre 2002StatutMembreDernière intervention22 juillet 2007 26 nov. 2005 à 12:29
Oui, mais ne retourne en aucun cas le texte qui est en plus dans l'une des deux chaînes comparées :)
Regarde ses exemples, il me semble pourtant qu'ils soient assez clairs :-/
guill76
Messages postés193Date d'inscriptionmercredi 24 août 2005StatutMembreDernière intervention 3 juin 2016 26 nov. 2005 à 12:25
Mais il me semble que la focnction strcmp parse aussi toute la chaine non?
Naixn
Messages postés455Date d'inscriptionmardi 17 septembre 2002StatutMembreDernière intervention22 juillet 2007 26 nov. 2005 à 11:32
Question con, mais pourquoi est-il mieux de faire
$nb = count($machin);
while ($i < $nb)
{
// Statement
$i++
}
30 nov. 2005 à 08:48
30 nov. 2005 à 01:05
C'est vrai que 'chaine différentielle' est peut être une mauvaise dénomination. Enfin bon, voilà la fonction est postée et des fois y'a pire comme code.
29 nov. 2005 à 09:29
j'ai du mal avec ta fonction :
echo ( differential_str("salut","les gars : salut") );//retourne -1
echo ( differential_str("salut","hey, salut les gars") );//retourne -1
Bref, ta fonction ne fonctionne que si la chaîne $comparestr débute par $refstr.
Quel intérêt alors par rapport à une fonction comme strstr() ? A part que tu renvoie 1 ou -1 selon si les chaînes sont égales ou ne sont pas comparables ?
echo substr (strstr ('salut les gars', 'salut'), strlen('salut'));
fait la même chose que ta fonction.
Et même, si on suit ton raisonnement, faire un vrai différentiel entre 2 chaînes (on peut même ajouter la gestion de la casse facilement) :
<?php
function strDiff ($haystack, $needle) {
if (false !($pos strpos ($haystack, $needle))) {
$retour = substr_replace($haystack, '', $pos, strlen($needle));
if ($retour === '') {
return $retour = 1;
}
return $retour;
}
return $retour = -1;
}
echo strDiff ('hey, salut les gars !', 'salut'), '
'; // retourne 'hey, les gars !'
echo strDiff ('salut les gars', 'salut'), '
'; // retourne 'les gars'
echo strDiff ('salut', 'salut'), '
'; // retourne 1
echo strDiff ('rien à voir', 'salut'), '
'; // retourne -1
?>
Ou alors, je n'ai pas pigé le véritable but de ta source ;-)
26 nov. 2005 à 12:34
26 nov. 2005 à 12:30
26 nov. 2005 à 12:29
Donc, tu le fais avant :)
26 nov. 2005 à 12:29
Regarde ses exemples, il me semble pourtant qu'ils soient assez clairs :-/
26 nov. 2005 à 12:25
26 nov. 2005 à 11:32
$nb = count($machin);
while ($i < $nb)
{
// Statement
$i++
}
plutôt que :
for ($nb count($machin), $i 0; $i < $nb; $i++)
{
// Statement
}
?
25 nov. 2005 à 20:17
plutôt que de parser toute la chaîne pour savoir si elles sont identiques ou pas, utilise la fonction strcmp($chaine1,$chaine2)
ensuite dans les boucles mets une variable $nb=count($machin);
while($i<$nb)
{
$i++;
}
plutôt que for($machin=0;$machin<count($blabla);$machin++)
{
}