Pourquoi printf et sprintf ne marche pas ???

Résolu
bluemandfr Messages postés 55 Date d'inscription vendredi 7 septembre 2007 Statut Membre Dernière intervention 16 mai 2013 - 11 mai 2008 à 03:33
yoman64 Messages postés 962 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 2 août 2010 - 11 mai 2008 à 04:20
Bonjour à tous !

Cherchant de la documentation sur printf et sprintf, je tombe sur l'exemple fourni dans de mauel officiel .chm de PHP. Je fais un copier/coller du code suivant :

printf("[%s]\n",      $s); // affichage d'une chaîne standard
printf("[%10s]\n",    $s); // justification à droite avec des espaces
printf("[%-10s]\n",   $s); // justification à gauche avec des espaces
printf("[%010s]\n",   $s); // l'espacement nul fonctionne aussi sur les chaînes
printf("[%'#10s]\n",  $s); // utilisation du caractère personnalisé de séparation '#'
printf("[%10.10s]\n", $t); // justification à gauche mais avec une coupure à 10 caractères

voici le résultat sur mon ordi :

[monkey] [ monkey] [monkey ] [0000monkey] ####monkey [many monke]

 KESKISPASSE

Alors plusieurs remarques :

1) le \n ne marche pas : ca ne passe pas à la ligne.
2) le formatage par x fois espace ne marche pas nom plus.

Mais KESKISPASSE

Puis, j'essaye avec sprintf, et alors là.... C'EST L'APOLTHÉOSE  !

RIEN NE S'AFFICHE !!!!!

Est-ce mon PHP est mal configuré ???? (J'utilise Easy PHP auquel je n'ai rien touché, et dont je suis extrêmement content par ailleurs.

ALors pourquoi ce bug étrange ?

Merci à tous de me venie en aide, j'ai besoin de formatter des données venant de MySQL pour les afficher correctement !!!!

BlueMan.

1 réponse

yoman64 Messages postés 962 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 2 août 2010 2
11 mai 2008 à 04:20
Salut,

Déja faut ssavoir que sprintf retourne un string et n'affiche rien, donc normal..
Ensuite je vois vraiment pas ton problème si tu as le retour que tu dis, c'est exactement le résultat attendu si je me fis à la chaine que tu passe à printf.....

Sache que \n affiche un retour de ligne mais que la plupart des navigateurs ne prenne pas en compte ce genre de retour (puisqu'ils s'attendent à du html). Affiche la source, tu vas bien voir que tes retours y sont.

Idem pour les espaces, il s'attend à du html, les "blank spaces" ne sont pas pris en compte en html.

Donc tu peux faire echo ''; avant tes printf et echo '

'; à la fin, ou tu peux forcer le navigateur à prendre ça pour du texte en envoyant un header pour lui dire que c'est du texte.

Ou encore utiliser sprintf et faire un str_replace afin de remplacer les espaces et les retour de lignes par des quotes et tags html.

-------------------
Vous cherchez un hebergement Php/MySQL Gratuit et sans publicités ??
Et bien c'est la : www.e3b.org  
3
Rejoignez-nous