jef80
2010-04-29 21:29:15 UTC
Bonjour,
Pb avec cette petite routine (j'ai laissé les commentaires pour mieux de
compréhension).
ALGO: Lecture d'un caractère,
si ce caractère est un espace et si le caractère précédent est un chiffre
et si le 3ème caractère précédent n'est pas une virgule,
alors supprimer ce caractère.
Retourner la chaîne corrigée
Je dois obtenir la même chaine avec suppression des espaces des mille:
$ligne2 = "abc 6221,26 1343,25 F";
<?php
$ligne = "abc 6 221,26 1 343,25 F";
$ligne2 = "";
$nb_car = strlen($ligne);
echo "<B>AVANT: </B><BR> $ligne<BR>";
echo "Nbe de caractères de la ligne AVANT: ", $nb_car, "<BR>";
echo "\$ligne (dans boucle for)= <BR>";
for ($i=0; $i <= ($nb_car-1); $i++) {
$car = $ligne[$i]; //parcours la ligne pas à pas
echo $car; //réaffiche pas à pas la ligne d'origine
//le test n'est nécessaire qu'à partir du 4ème car de la ligne
if ($i > 3) { //pour pouvoir tester le car $i-3
//si le car lu courant est un espace
// et le car précédent est un chiffre
// et si le 3e car précédent n'est pas une virgule
if (($car = " ") && (is_numeric($ligne[$i-1])) && ($ligne[$i-3] != ","))
{
//$ligne2 .= chr(0); //alors on n'ajoute rien à $ligne2
} else {
//on garde le car lu courant
$ligne2 .= $car;
}
} else {
//$i<=3 : on garde le car lu courant
$ligne2 .= $car;
}
}
$nb_car2 = strlen($ligne2);
echo "<BR>Nbe de caractères APRES: ", $nb_car2, "<BR>";
echo "APRES= <BR>$ligne2";
?>
Si vous avez un peu de temps ?
Cordialement jf.
Pb avec cette petite routine (j'ai laissé les commentaires pour mieux de
compréhension).
ALGO: Lecture d'un caractère,
si ce caractère est un espace et si le caractère précédent est un chiffre
et si le 3ème caractère précédent n'est pas une virgule,
alors supprimer ce caractère.
Retourner la chaîne corrigée
Je dois obtenir la même chaine avec suppression des espaces des mille:
$ligne2 = "abc 6221,26 1343,25 F";
<?php
$ligne = "abc 6 221,26 1 343,25 F";
$ligne2 = "";
$nb_car = strlen($ligne);
echo "<B>AVANT: </B><BR> $ligne<BR>";
echo "Nbe de caractères de la ligne AVANT: ", $nb_car, "<BR>";
echo "\$ligne (dans boucle for)= <BR>";
for ($i=0; $i <= ($nb_car-1); $i++) {
$car = $ligne[$i]; //parcours la ligne pas à pas
echo $car; //réaffiche pas à pas la ligne d'origine
//le test n'est nécessaire qu'à partir du 4ème car de la ligne
if ($i > 3) { //pour pouvoir tester le car $i-3
//si le car lu courant est un espace
// et le car précédent est un chiffre
// et si le 3e car précédent n'est pas une virgule
if (($car = " ") && (is_numeric($ligne[$i-1])) && ($ligne[$i-3] != ","))
{
//$ligne2 .= chr(0); //alors on n'ajoute rien à $ligne2
} else {
//on garde le car lu courant
$ligne2 .= $car;
}
} else {
//$i<=3 : on garde le car lu courant
$ligne2 .= $car;
}
}
$nb_car2 = strlen($ligne2);
echo "<BR>Nbe de caractères APRES: ", $nb_car2, "<BR>";
echo "APRES= <BR>$ligne2";
?>
Si vous avez un peu de temps ?
Cordialement jf.