• 締切済み

PHPで、テーブル(表)をimagecreate()で動的に書こうとし

PHPで、テーブル(表)をimagecreate()で動的に書こうとしています。 PHP初心者です。 imagerectangle(),imagettftext()、fopen()辺りを組み合わせれば良いのだとは思いますが… 各行と列の幅/高さを指定してボーダー(罫線)を引くところまではできて、その後の「各セルに文字を書く」ところでつまずいています。 別ファイルにカンマ区切りで記述しておいた文字列を、fgetcsv()で呼び出せばいいのかなと考えていますが、fgetcsv()の使い方がよくわからず、うまく書けません。 例示をいただければと想います。 現在は、以下のような感じです。 <?php header( "content-type: image/png" ); $image = imagecreate( 228,480 ); //初期化 $bg = imagecolorallocate( $image,0,0,0 ); $border_color = imagecolorallocate( $image,128,0,0 ); $white = imagecolorallocate( $image,255,255,255 ); $font_family = "msgothic.ttc"; //暫定的に。 $wid = 0; //セルの幅 $hgt = 20; //セルの高さ $x = 0; //描画開始位置の横座標。後のfor文の中で値が代入される $y = 0; //描画開始位置の縦座標。後のfor文の中で値が代入される $font_size = 8; $angle = 0; //ここから表の描画 for( $c = 1; $c <= 13; $c++ ) { //cは「何列目か」 if( $c == 1) { $wid = 10; } elseif( $c % 2 == 0 ) { $wid = 5; } else { $wid = 30; } for( $r = 1; $r <= 13; $r++ ) { //rは「何行目か」 $y = $hgt * ($r-1); if( $c == 1) { //1列目ならすべて塗りつぶし imagefilledrectangle( $image, $x , $y , $x + $wid , $hgt , $border_color ); } elseif( $r == 1 && $c % 2 !=0) { //1行目なら奇数列目のセルを塗りつぶし imagefilledrectangle( $image, $x , $y , $x + $wid , $hgt , $border_color ); } else { imagerectangle ( $image, $x , $y , $x + $wid , $hgt , $border_color ); } } $x = $x + $wid; //描画開始位置の変更 } imagepng($image); imagedestroy($image); ?>

みんなの回答

回答No.1

単純なCSV、つまり 1,2,3,4 a,b,c,d とかなっていて、総数もそんなに多くないのであれば、file関数を使ったほうが早いのではないでしょうか。 <?php $data = file('example.csv'); foreach($data as $line){ $ary = explode(',', $line); } ?> こんな感じで。

関連するQ&A

専門家に質問してみよう