Supprimer les espaces dans une chaîne

jacfev
Invité n'ayant pas de compte PHPfrance

29 avr. 2010, 20:25

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";

Code : Tout sélectionner

<?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.

Eléphant du PHP | 170 Messages

30 avr. 2010, 05:17

Bonjour,
<?php
$ligne = "abc 6 221,26 1 343,25 F";

$ligne2 = preg_replace('/([^,].\d) /', '$1', $ligne);

echo $ligne2;
?>
=> http://lumadis.be/regex/tuto_pcre.php <=

Eléphant du PHP | 422 Messages

30 avr. 2010, 14:21

toujours faire une recherche sur http://www.php.net et/ou sur http://www.google.fr :)
utiliser http://ideone.com/ pour vos codes :)

Mammouth du PHP | 985 Messages

30 avr. 2010, 14:46

Tu le fais comment avec str_replace(), telnes?
Face à la roche, le ruisseau l'emporte toujours, non pas par la force mais par la persévérance.

ViPHP
ViPHP | 5462 Messages

30 avr. 2010, 14:46

oui mais tu comptes faire comment avec str_replace ?

Eléphant du PHP | 422 Messages

30 avr. 2010, 15:15

a pardon j'avais pas lu :/ je croyais qu'il voulais juste les blancs !!

dommage
toujours faire une recherche sur http://www.php.net et/ou sur http://www.google.fr :)
utiliser http://ideone.com/ pour vos codes :)