1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
<?php
/** -------------------------------------------------------------------------------
 *   ファイルシステム:ファイルデータ読み込み:fgetcsvの利用例
 *  2015.09.15 作成 yoshi of CXMedia Inc.
 * -------------------------------------------------------------------------------- */
// 初期設定
$filename 'data/PHP_file_function.txt';

// ファイルオープン:readモード 「@は、エラー制御演算子で、エラーメッセージの出力を回避」
if(!$fh = @fopen($filename,"r")){
    exit(
"ファイルが開けません。");
}
// HTMLのボディ部分の保存用
$html_body "";
// HTMLのテーブルセット
$html_body .= '<table class="table_border table_center" width="960">';

/* ---------------------------------------------------------------------------
 *   ファイルの読込:CSV形式
 * fgetcsv( handle [,length [,delimiter [,enclosure [,escape]]]])
 *   lengthの省略:最大行長制限なし、lengthの省略:","、escapeは、PHP5.3以降
 * --------------------------------------------------------------------------- */
// 「tab」区切りで、レコード長指定なしのfgetcsvによる読み込み
while (($data_ary fgetcsv($fh,0,"\t")) !== FALSE) {
    
//読込データ(配列)の件数セット
    
$num count($data_ary);
    
$html_body .= '<tr>';
    
    for (
$c=0$c $num$c++) {
        
// 「Shift_JISコード」のファイルの内容から「UTF-8」に変換
        
$str mb_convert_encoding($data_ary[$c],'UTF-8','Shift_JIS');
        
// グループ欄か各欄の表示かの判断
        
if($num == 3){
            
// 「各欄の表示」
            // 関数名の欄で強調表示のための正規表現パターンの作成
            
if($c == 0){
                
$reg_ptn = ($str)? '/('.$str.')/':'';
            }
            
// 各欄でデータありのとき
            
if($str){
                
// 正規表現パターンがセットされた利用関数の強調表示のセット
                
if($reg_ptn){
                     
$str preg_replace($reg_ptn,'<span class="font_bblue">$1</span>',$str);
                }
            } else {
                
// NULLデータの時、空白文字のセット
                
$str '&nbsp;';
            }
            
$html_body .= '<td>'.$str ."</td>\n";
        } else {
            
// 「グループ欄のとき背景色とカラム統合」
            
$html_body .= '<td colspan="3" class="align_c bgc_yellow">'.$str ."</td>\n";
        }
    }
    
    
$html_body .= '</tr>';
}
$html_body .= '</table>';
// ファイルクローズ
fclose($fh);

/* -------------------------
 *   HTMLドキュメント出力
 * ------------------------- */
// HTMLヘッダー出力
header_out();
// HTMLボディ部分の内容表示
echo $html_body;
// HTMLヘッダー出力
footer_out();
exit;

// --- HTMLドキュメントのヘッダー出力 ---
function header_out(){
    echo <<<_EOL_
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=UTF-8">
<title>ファイルデータ読み込み:fgetcsv</title>
<style type="text/css">
.table_border{
    border-collapse:collapse;
}
table.table_border td{
    border:1px solid #999999;
}
table.table_center{
    margin: 0px auto;
}
.align_c{
    text-align:center;
}
.bgc_yellow {
    background-color:yellow;
}
.font_bblue{
    color:blue;
    font-weight:bold;
}
</style>
</head>
<body>
_EOL_;

}
// --- HTMLドキュメントのフッター出力 ---
function footer_out(){
    echo <<<_EOL_
</body>
</html>
_EOL_;

}
?>