Page 1 sur 1

longueur de chaine de caractères

Posté : 13 avr. 2007, 15:12
par dauvilliers
Bonjour, c'est encore moi mais cette fois mon problème est dans le sens inverse il se trouve que je dois ecrire un fichier selon une structure bien spécifique et j'ai un probleme avec mes chaines de caractères qui ne sont pas forcement de la longueur exacte de ce que j'ai besoin!
est- ce qu'il existerait par hazard une fonction permattant de rajouter des blancs devant ou derriere une chaine de caractère afin que celle-ci atteigne la longueur voulue ?
Merci encore a vous :D

Posté : 13 avr. 2007, 15:15
par jojolapine
je pense que tu parts du mauvais côté...
Pour écrire un fichier de données, il vaut mieux utiliser des séparateurs (tabulation ou une suite de caractères précis), plutôt que de limiter les données en nombre de caractères...
Mais je pense que ça irait mieux si tu nous disais enfin à quoi ressemble ton fichier, et ce que tu veux mettre dedans :roll:

Posté : 13 avr. 2007, 15:17
par rakizm
expressions régulières et strlen()

heu non... hi hi

Posté : 13 avr. 2007, 15:38
par dauvilliers
heu en fait non j peu pas choisir parce que je doit le donner à un format bien précis car derriere moi il y a un autre système qui recupere ce fichier et qui a besoin que les zones soient bien délimitées. c'est pourquoi je ne peut pas utilisé les séparateurs!
c'est un fichier contenant principalement des références par exemple une référence qui doit se contenir sur 25 caractères n'en fait que 15 ou 12 ou 14 cela depend et il me faudrait donc une facon de mettre cette référence sur 25 automatiquement...

Posté : 13 avr. 2007, 15:47
par jojolapine
alors regarde du côté de sprintf():
$chaineformate=sprintf('%'.$longueurcodemax.'s',$codeproduit);

merci

Posté : 13 avr. 2007, 16:44
par dauvilliers
merci ca a l'ai d'être plutot interressant je vais voir tout ca en attendant j me suis trouvé une ptite astuce :)

voila pour une chaine qui doit faire 6caracteres par exemple je lui met le nombre de 0 minimum qu'il faudra a sa suite et je complete avec des 0 devant pour avoir une chaine de la longueur minimum si ma variable est vide et ensuite je coupe la partie de la chaine qui me plait soit les 6 dernier caractères :D
Bon j'avoue c'est pa ce qu'il y a de plus propre mais ca feras l'affaire le temp j analyse la solution qui seras plus interressante :)

$machaine de 6caracteres=substr(('000'.$machainequinefesait que0à3caractères.'000'), -6, 6);

Vive Joe la Bidouille :)

Posté : 13 avr. 2007, 20:12
par titerm
comme précisé plus haut, tu as sprintf() ou plus simple tu as str_pad().

Mais ta solutions, c'est un peu l'usine...

merciiii

Posté : 16 avr. 2007, 10:20
par dauvilliers
haaaaa str_pad ca c'est parfait pour moi :) tout ce qu'il me fallait :)
Merci a toi titerm :)