プロが教えるわが家の防犯対策術!

どうもこんにちわ。PHP初心者です。

どうか助けてください!

CSVファイルを読み込んで表示させるプログラムなんですが、
サーバーが変わったら、日本語のデータのみ表示されなくなりました。

以前質問があった下記件と同じ事象で、
参考に色々試してみましたが上手くいきません。
http://oshiete1.watch.impress.co.jp/qa5972094.html

ソースは下記です。
どうか、どこをどういじれば良いか、どなたか教えて頂けないでしょうか?
何卒よろしくお願いします。
------------------
<?php
//今日の日付を取得
$today = date("Ymd");
//表示数の設定。
$disp_num = 1;
//CSV格納先
$fp = fopen("data/today_word.csv", "r");

while ($data = fgetcsv($fp, 10000)) {
for($n = 0; $n < count($data); $n++){
$data[$n] = mb_convert_kana($data[$n], "ak", "SJIS");
}

if ((ereg($today,$data[0]))) {
$result[] = "<a href='$data[2]'>$data[1]</a><br />";
}
}
fclose ($fp);

?>
-----------------------------

A 回答 (2件)

とりあえず、なんも確認とかしておりませんので、うまく動かなかったらご報告ください。



そちらが提示されたリンクと同じ事をすれば良いのではないかと思います。

そちらのソースの↓以下の部分を、
while ($data = fgetcsv($fp, 10000)) {

以下のように書き換えてみるとどうなるでしょう?
while ($data = explode(',', trim(fgets($fp, 10000)))) {

日本語の入ったCSVファイルをfgetcsv()する場合は、文字コードに気をつけないと地雷になるっぽいです。
    • good
    • 0
この回答へのお礼

ありがとうございます!!

でも、
上手くいかないです。

エラーになってしまいました。。

どうすれば良いでしょうか。

お礼日時:2010/12/01 00:06

申し訳ありません。


こちらで テスト用のCSVファイルを作り、確かめました。

完全に 挙動を思い違いしておりまして、#1のでは、エラーが出たというより、
無限ループ発生で、タイムアウトで落ちたんではないかと思います。

前回と同じ部分を 以下のように変更するとどうでしょうか?

while ($str = fgets($fp, 10000)) {
$data = explode(',', trim($str));
    • good
    • 0
この回答へのお礼

上手くいきました!
相談に出して本当に良かったです。

ありがとうございました!!

お礼日時:2010/12/01 01:30

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!