CSVファイルを出力する

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>CSVファイルを読み込みたい</title>
</head>
<body>
<?php
// CSVファイルはWindowsで作成したSJISエンコード
$csvFile = '01-2.csv';  

// PHP5用文字化け対策
$tempCSV = file_get_contents($csvFile);
# 文字エンコードをUTF-8に変換します。
$tempCSV = mb_convert_encoding($tempCSV, 'UTF-8', 'SJIS-win');
# 一時ファイルに保存します。
$fp = tmpfile();
fwrite($fp, $tempCSV);
# ファイルポインタを先頭に戻します。
rewind($fp);
# ローケルを設定します。
setlocale(LC_ALL, 'ja_JP.UTF-8');

# 1行ずつ読み込み、<table>タグで整形します。
$html = '<table border="1">';

while ($arr = fgetcsv($fp, 1024)) {
  // 空行以外を処理
  if (!(count($arr) == 1 && $arr[0] == '')) {
    list($youbi, $main, $dessert) = $arr;
    $html .= '<tr>'
      . "<td>" . h($youbi) . "</td>"
      . "<td>" . h($main) . "</td>"
      . "<td>" . h($dessert) . "</td>"
      . '</tr>';
  }
}

$html .= '</table>';

# ファイルを閉じます。
fclose($fp);

# ブラウザに出力します。
echo $html;

function h($string) { // HTMLでのエスケープ処理をする関数
  return htmlspecialchars($string, ENT_QUOTES);
}
?>
</body>
</html>