Auteur : Atchoum
| Version : 11/01/2006 | | |
| |
L'avantage par rapport au CSV c'est qu'il gère la taille des colonnes et il met le titre en gras.
function sylk($ tableau , $ nomfic )
{
define(" FORMAT_REEL " , 1);
define(" FORMAT_ENTIER " , 2);
define(" FORMAT_TEXTE " , 3);
$ cfg_formats [ FORMAT_ENTIER] = " FF0 " ;
$ cfg_formats [ FORMAT_REEL] = " FF2 " ;
$ cfg_formats [ FORMAT_TEXTE] = " FG0 " ;
if ($ tableau )
{
if ($ nomfic = = false )
$ nomfic = " extraction " ;
$ myfile = fopen($ nomfic . " . xls " , " w + " )or die(" pas bien " );
fputs ($ myfile , " ID ; Atchoum Production\n " );
fputs ($ myfile , " \n " );
fputs ($ myfile , " P ; PGeneral\n " );
fputs ($ myfile , " P ; P # , # # 0 . 00\n " );
fputs ($ myfile , " P ; P # , # # 0\n " );
fputs ($ myfile , " P ; P @ \n " );
fputs ($ myfile , " \n " );
fputs ($ myfile , " P ; EArial ; M200\n " );
fputs ($ myfile , " P ; EArial ; M200\n " );
fputs ($ myfile , " P ; EArial ; M200\n " );
fputs ($ myfile , " P ; FArial ; M200 ; SB\n " );
fputs ($ myfile , " \n " );
fputs ($ myfile , " B ; Y " . (count($ tableau )));
for ($ i = 0; $ i < count($ tableau ) ; $ i + + )
$ tmp [ $ i ] = count($ tableau [ $ i ] );
$ nbcol = max($ tmp );
fputs ($ myfile , " ; X " . $ nbcol . " \n " );
fputs ($ myfile , " \n " );
for ($ cpt = 0; $ cpt < $ nbcol ; $ cpt + + )
{
switch (gettype($ tableau [ 1] [ $ cpt ] ))
{
case " integer " :
$ num_format [ $ cpt ] = FORMAT_ENTIER;
$ format [ $ cpt ] = $ cfg_formats [ $ num_format [ $ cpt ] ] . " R " ;
break ;
case " double " :
$ num_format [ $ cpt ] = FORMAT_REEL;
$ format [ $ cpt ] = $ cfg_formats [ $ num_format [ $ cpt ] ] . " R " ;
break ;
default :
$ num_format [ $ cpt ] = FORMAT_TEXTE;
$ format [ $ cpt ] = $ cfg_formats [ $ num_format [ $ cpt ] ] . " L " ;
break ;
}
}
for ($ cpt = 1; $ cpt < = $ nbcol ; $ cpt + + )
{
for ($ t = 0; $ t < count($ tableau ); $ t + + )
$ tmpo [ $ t ] = strlen($ tableau [ $ t ] [ $ cpt - 1] );
$ taille = max($ tmpo );
if (strlen($ tableau [ 0] [ $ cpt - 1] ) > $ taille )
$ taille = strlen($ tableau [ 0] [ $ cpt - 1] );
if ($ taille > 50)
$ taille = 50;
fputs ($ myfile , " F ; W " . $ cpt . " " . $ cpt . " " . $ taille . " \n " );
}
fputs ($ myfile , " F ; W " . $ cpt . " 256 8\n " );
fputs ($ myfile , " \n " );
for ($ cpt = 1; $ cpt < = $ nbcol ; $ cpt + + )
{
fputs ($ myfile , " F ; SDM4 ; FG0C ; " . ($ cpt = = 1 ? " Y1 ; " : " " ). " X " . $ cpt . " \n " );
fputs ($ myfile , " C ; N ; K\ " " . $ tableau [ 0] [ $ cpt - 1] . " \ " \n " );
}
fputs ($ myfile , " \n " );
$ ligne = 2;
for ($ i = 1; $ i < count($ tableau ); $ i + + )
{
for ($ cpt = 0; $ cpt < $ nbcol ; $ cpt + + )
{
fputs ($ myfile , " F ; P " . $ num_format [ $ cpt ] . " ; " . $ format [ $ cpt ] );
fputs ($ myfile , ($ cpt = = 0 ? " ; Y " . $ ligne : " " ). " ; X " . ($ cpt + 1). " \n " );
if ($ num_format [ $ cpt ] = = FORMAT_TEXTE)
fputs ($ myfile , " C ; N ; K\ " " . str_replace(' ; ' , ' ;; ' , $ tableau [ $ i ] [ $ cpt ] ). " \ " \n " );
else
fputs ($ myfile , " C ; N ; K " . $ tableau [ $ i ] [ $ cpt ] . " \n " );
}
fputs ($ myfile , " \n " );
$ ligne + + ;
}
fputs ($ myfile , " E\n " );
fclose($ myfile );
} else
print " fichier non créer < br > " ;
}
|
|
Auteur : doof
| Version : 11/01/2006 | | |
| | function array_show($ tabl )
{
static $ taille ;
echo " < table border = 1 cellspacing = 0 cellpadding = 0 $ taille > " ;
if (is_array($ tabl )) {
$ nbclées = sizeof ($ tabl );
$ keyscol = array_keys($ tabl );
$ firstcol1 = $ keyscol [ 0] ;
$ test2d = $ tabl [ $ firstcol1 ] ;
if (is_array($ test2d )) {
echo " < tr > < td bgcolor = efeffb > < b > clés < / b > < / td > " ;
foreach ($ tabl as $ clee = > $ valeur ) {
echo " < td align = center bgcolor = efeffb > < b > $ clee < / b > < / td > " ;
}
echo " < tr > " ;
foreach ($ tabl [ $ firstcol1 ] as $ ligne = > $ valeur ) {
echo " < tr > < td align = center bgcolor = efefef > < b > $ ligne < / b > < / td > " ;
foreach ($ tabl as $ col = > $ val ) {
$ case = $ tabl [ $ col ] [ $ ligne ] ;
if (is_array($ case )) {
$ taille = " width = 100 % height = 100 % " ;
echo " < td > " ;
array_show($ tabl [ $ col ] [ $ ligne ] );
echo " < / td > " ;
}
else {
echo " < td align = center > " . $ case . " < / td > " ;
}
}
echo " < / tr > " ;
}
}
else {
foreach ($ tabl as $ clee = > $ value ) {
if (! is_array($ value )) {
echo " < tr > < td align = center bgcolor = efefef width = 15 > < b > $ clee < / b > < / td >
< td align = center > $ value < / td > " ;
}
else {
$ taille = " width = 100 % height = 100 % " ;
echo " < td bgcolor = efeffb align = center colspan = 2 > < b > $ clee < / b > < / td > " ;
array_show($ tabl [ $ clee ] );
echo " < / td > " ;
}
echo " < / tr > " ;
}
}
}
else {
echo " $ tabl ( variable simple ) < br > < br > " ;
}
echo " < / table > " ;
$ taille = " " ;
}
|
|
Auteur : doof
| Version : 16/01/2006 | | |
| |
Cette fonction prend en paramètre un objet ou un tableau pour le parcourir récursivement et
retourner le contenu formaté grace à sprintf(),donc personalisable.
Le 2eme paramètre, $format est un tableau contenant la "personalisation", c'est a dire des paramètres pris en compte par sprintf().
Il y en a 5 au total :
- Le 1er correspond au formatage d'une variable simple.
- Le 2ème correspond au formatage d'un début de "container", c'est à dire d'un tableau ou d'un objet.
- Le 3ème correspond à la fin d'un container
- Le 4ème est le/les caractère d'indentation
- Le 5ème sert à se repérer dans la fermeture d'une balise, il détermine en fait sur quoi on se base pour le balisage
et stock la bonne valeur dans ce cas, la valeur peut être 'key', 'type', 'val' ou 'depth'.
sprintf() lui même peut prendre 4 paramètres :
- Le 1er est le nom de variable : %1$s
- Le 2eme est son type : %2$s
- Le 3eme est sa valeur : %3$s
- Le 4eme est la profondeur actuelle (cas de tableaux imbriqués) : %4$s
Le 3eme paramètre $prefix sert à régler un cas bien particulier :
un tableau indexé aura uniquement des chiffres comme clés, et si on veut utiliser la clé comme nom de balise en XML, un chiffre n'est pas valide.
On peut donc passer en argument une chaine qui servira de préfixe à toutes les clés commençant par un chiffre.
Grace à ceci, on peut personaliser une sortie allant du XML au CSV en passant par du HTML.
Le format par défaut étant XML.
function dumpFormat($ struct , $ format = false , $ prefix = false )
{
static $ stack = array ();
static $ depth = 0;
static $ str = ' ' ;
if ($ format = = = false ) {
$ format = array (
' <%2$s name="%1$s">%3$s</%2$s> ' . " \n " ,
' <%2$s name="%1$s"> ' . " \n " ,
' </%2$s> ' . " \n " ,
" \t " ,
' type '
);
}
if (is_object($ struct )) $ struct = get_object_vars($ struct );
foreach ($ struct as $ key = > $ val ) {
if ($ prefix ! = false ) {
if (preg_match(' (^\d) ' , $ key )) $ key = $ prefix . $ key ;
}
$ type = gettype($ val );
if (is_object($ val )) {
array_push ($ stack , $ { $ format [ 4] } );
$ str . = str_repeat($ format [ 3] , $ depth ). sprintf($ format [ 1] , $ key , $ type , $ val , $ depth );
$ depth + + ;
dumpFormat(get_object_vars($ val ), $ format , $ prefix );
}
if (is_array($ val )) {
array_push ($ stack , $ { $ format [ 4] } );
$ str . = str_repeat($ format [ 3] , $ depth ). sprintf($ format [ 1] , $ key , $ type , $ val , $ depth );
$ depth + + ;
dumpFormat($ val , $ format , $ prefix );
}
elseif (is_scalar($ val )) {
$ str . = str_repeat($ format [ 3] , $ depth ). sprintf($ format [ 0] , $ key , $ type , $ val , $ depth );
}
}
$ depth - - ;
if ($ depth ! = - 1) {
$ { $ format [ 4] } = array_pop($ stack );
$ str . = str_repeat($ format [ 3] , $ depth ). sprintf($ format [ 2] , $ key , $ type , $ val , $ depth );
}
else {
$ stack = array ();
$ depth = 0;
$ ret = $ str ;
$ str = ' ' ;
return $ ret ;
}
}
|
Exemple de personnalisation |
$ format = array (
' <b><span style="color:#66B">%1$s</span>
</b> => <i><span style="color:#6B6">(%2$s)</span></i> %3$s<br /> ' ,
' <div style="border-left:3px solid #66B;margin-left:20px;margin-top:10px"><b>
<span style="color:#66B;background-color:#DDD"> %1$s </span>
</b> => <b>{</b> <span style="color:#6B6">(%2$s)</span><br /> ' ,
' <b>}</b><span style="color:#66B">(%1$s)</span></div> ' ,
' ' ,
' key '
);
echo dumpFormat($ data , $ format );
$ format = array (
' <%1$s class="%2$s">%3$s</%1$s> ' . " \n " ,
' <%1$s class="%2$s"> ' . " \n " ,
' </%1$s> ' . " \n " ,
" \t " ,
' key '
);
echo ' <pre> ' ;
echo htmlspecialchars(dumpFormat($ data , $ format , ' item ' ));
echo ' </pre> ' ;
|
|
Auteur : genova
| Version : 16/01/2006 | | |
| |
Un print_r() permettant l'affichage de la structure d'un tableau, avec deux trois colorations sympas
pour visualiser directement les sous tableaux et les clefs.
function printr($ array )
{
static $ indentation = ' ' ;
static $ array_key = ' ' ;
$ cst_indentation = ' ' ;
echo $ indentation . $ array_key . ' <b>array(</b><br /> ' ;
reset ($ array );
while (list ($ k , $ v ) = each($ array ))
{
if (is_array($ v ))
{
$ indentation . = $ cst_indentation ;
$ array_key = ' \ ' < i style= " color : # 334499 ; " > ' . addslashes(htmlspecialchars($k)) . ' < / i> \' = > ' ;
printr($v);
$indentation = substr($indentation, 0, strlen($indentation) - strlen($cst_indentation));
}
else
{
echo $indentation . $cst_indentation . ' \'< i style= " color : # 334499 ; " > ' .
addslashes(htmlspecialchars($k)) . ' < / i> \' = > \'' . addslashes(htmlspecialchars($v)) . ' \', < br / > ' ;
}
}
echo $indentation . ' < b> )< / b> ' . (($indentation === ' ' ) ? ' ; ' : ' , ' ) . ' < br / > ' ;
}
|
|
Consultez les autres pages sources
|
|