Page 1 sur 1

Supprimer les espaces dans une chaîne

Posté : 29 avr. 2010, 20:25
par jacfev
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.

Re: Supprimer les espaces dans une chaîne

Posté : 30 avr. 2010, 05:17
par blof
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 <=

Re: Supprimer les espaces dans une chaîne

Posté : 30 avr. 2010, 14:21
par telnes

Re: Supprimer les espaces dans une chaîne

Posté : 30 avr. 2010, 14:46
par Dr@ke
Tu le fais comment avec str_replace(), telnes?

Re: Supprimer les espaces dans une chaîne

Posté : 30 avr. 2010, 14:46
par stealth35
oui mais tu comptes faire comment avec str_replace ?

Re: Supprimer les espaces dans une chaîne

Posté : 30 avr. 2010, 15:15
par telnes
a pardon j'avais pas lu :/ je croyais qu'il voulais juste les blancs !!

dommage