| << formで入力される値をチェックしたい | 質問一覧 | 全角スペースと半角スペースのtrim >> |
- 0P
CSV表示で文字化け
- 0P
するプログラムを作成しました。
テストしますと任意の検索キーの結果が文字化けしてしまいます。
文字化けの時のキーは一定で、漢字の時も半角数字の時もおこります。
文字化けは日本語で半数英数字は化けません。
文字コードは shift_jis です。
<meta http-equiv="Content-Type" content="text/html; charset=shift_jis">
<style type="text/css">
テスト環境はXAMPPでローカルPCで実施してます。
ご教授お願いします。
------------キー検索部--------------
<?php
// 読み込むCSVファイル
$csvfile = "CSDATA.csv";
// CSVファイルの1行の最大サイズ
$linesize = 4096;
// 念のため変数を初期化
$printdata = "";
// 検索キーワードを設定
$keyword['kaishamei'] = "";
$keyword['tantou'] = "";
$keyword['shimei'] = "";
// GETで渡された値をカテゴリの検索キーワードとしてセット
$keyword['kaishamei'] = $_GET["keyword"];
$keyword['tantou'] = $_GET["keyword"];
$keyword['shimei'] = $_GET["keyword"];
// CSVファイルを開く
$fh = fopen ($csvfile, "r");
// 開けなかったら終了
if (!$fh) {
exit;
}
// 1行目の見出し部分を読み込み
if (!feof ($fh) ) {
$line = fgets ($fh, $linesize);
list ($head['kaishamei'], $head['tantou'], $head['shimei']) = explode (",", $line);
// 1行目の見出し行を表示用変数にセット
$printdata = $line;
}
// 2行目以降を読み込み
while (!feof ($fh)) {
// 見つかったかどうかのフラグを初期化
// $found['kaishamei'] = false;
$found['tantou'] = false;
$found['shimei'] = false;
// 1行読み込み
$line = fgets($fh, $linesize);
// 読み込んだデータを「,」区切りで分割して変数に入れる
list ($kaishamei, $tantou, $shimei) = explode (",", $line);
// 検索ワードに一致するか確認
if (strlen ($keyword['kaishamei'])) {
$found['kaishamei'] = mb_strpos ($kaishamei, $keyword['kaishamei']);
}
if (strlen ($keyword['tantou'])) {
$found['tantou'] = mb_strpos ($tantou ,$keyword['tantou']);
}
if (strlen ($keyword['shimei'])) {
$found['shimei'] = mb_strpos ($shimei, $keyword['shimei']);
}
// カテゴリーに一致したら、その行を表示用変数にセット
if ($found['kaishamei'] !== false or $found['tantou'] !== false or $found['shimei'] !== false)
{
$printdata .= $line;
}
}
// ファイルを閉じる
fclose ($fh);
// 表示
echo $printdata;
?>
-------------表示部--------------
-----------検索キー入力部は省略---------
</head>
<body>
<TABLE DATASRC=#CSVFILE >
<THEAD>
<TR ID="HEADER">
<TH>会社名
<TH>担当部
<TH>氏名
</TR>
</THEAD>
<TBODY>
<TR>
<TD><SPAN DATAFLD=KAISHA></SPAN></TD>
<TD><SPAN DATAFLD=BUMON></SPAN></TD>
<TD><SPAN DATAFLD=SHIMEI></SPAN></TD>
</TR>
</TBODY>
</TABLE>
</body>
</html>
CSV表示で文字化け PHPGANBA [03月14日 12時54分] コメント一覧
| formで入力される値をチェックしたい | 質問一覧 | 全角スペースと半角スペースのtrim |





