J’aimerais présenter des données dans un fichier texte, je voudrais les aligner comme icitte mais j’ai seulement réussi à les aligner un peu bizarrement avec le code suivant, pour chaque ligne :$raw .= $inst."\t".$plugin.str_repeat("\t",(floor(6-strlen($plugin)/6))).$name."\r";J’ai divisé par 6 car Firefox a l’air de compter 6 espaces pour une tabulation. Qu’est-ce qui cloche ? J’ai fait quelques recherches mais je ne sais pas quoi chercher (!).
Sinon pour faire plus simple (mais pas forcément plus élégant), tu pourrais faire pour chaque colonne :
$valeurcolonne = str_pad($valeur,$largeurcolonne)
puis concaténer le tout.
Genre
$array_valeurs = array('#int'=>array(),'#plugin'=>array(),'#name'=>array());
// ...
// là on remplie le tableau
// ...
$array_colonnes = array ('#int' => 8,'#plugin' => 40,'#name' => 40);
foreach ($array_valeurs['#int'] as $key1=>$valeur) {
foreach ($array_colonnes as $key2=>$largeurcolonne) {
echo str_pad($array_valeurs[$key2][$key1],$largeurcolonne);
}
echo '\n';
}
foreach ($values as $v) {
call_user_func_array(‘printf’, array_merge((array)$frmt, $v));
}[/code]
J’ai pas trop fait gaffe à l’alignement exact, j’ai juste mis “en gros” pour que ça ressemble. Tu peux mettre l’alignement à droite ou a gauche, spécifier combien de caractères il doit y avoir au total (permettant de faire le padding, donc), etc etc … C’est fait pour.
Ah, et le call_user_func_array t’es carrément pas obligé de t’en servir, ça permet juste d’appeler printf avec un tableau pour les arguments (comme je fais dans l’example).
Sinon c’est printf($frmt, $arg1, $arg2, …);
Merci pour le code de printf(), j’ignorais que y’avait ces possibilités. Le résultat est propre.
Pour info le code que j’ai utilisé :[code]$frmt = “%-6.s %-28.s %-28.s \n”;
$raw = sprintf($frmt,’#inst’,’#plugin’,’#name’);
$frmt = “%-6.d %-28.s %-28.s \n”;