phpテキストファイル読み込み関係についての質問です。


phpファイル
<?php
$fname = "test";
$lines = fopen($fname);
list($year, $mon, $day, $test) = split('[/.-]', $lines);
echo "$year年$mon月$dat日 $test<br />\n";
?>
testファイル
2006/01/01.1000
とします。 どうしてもtestのファイルを読み込めません。 どのようにすれば動くようになるでしょうか?

回答の条件
  • URL必須
  • 1人3回まで
  • 登録:2006/11/30 00:19:14
  • 終了:2006/12/07 00:20:03

回答(4件)

id:technolize No.1

technolize回答回数21ベストアンサー獲得回数32006/11/30 00:51:34

ポイント23pt

fopen はファイルを開くだけですので、読む処理が必要になります。

<?php
$fname = "test";
$fp = fopen($fname, 'rb');
$line = fgets($fp, 4096);
list($year, $mon, $day, $test) = split('[/.-]', $line);
echo "$year年$mon月$day日 $test\n";
fclose($fp);
?>

こんな感じでしょうか。

http://jp.php.net/manual/ja/function.fgets.php

id:zenval

やはり真っ白で何も表示がされないです…

大体はURLみたいな作業を行いたい感じです。

2006/11/30 10:18:36
id:Mook No.2

Mook回答回数1312ベストアンサー獲得回数3912006/11/30 00:57:35

ポイント23pt

まず動くように変更しました。

<?php
    $fname = 'C:\test.txt'; 
    $fno = fopen($fname, "r"); 
    $lines = fgets( $fno );
    fclose( $fno );

    print $lines."<br>\n";
    list($year, $mon, $day, $test) = split('[/.-]', $lines );
    echo "{$year}年{$mon}月{$day}日 $test<br />\n";
?>

問題点は、

  • fopen に第二引数がなかった。
  • fgets(実際の読み込み)をしていなかった。
  • 表示部分で変数の指定がまずかった。

の3点です。

PHP fopen等を参考にしてください。


3点目の変数は、変数名の直後に文字が続く場合、うまく変数として認識してくれないので、例示のように変数を{}で囲むとこれを回避できます。

id:kn1967 No.3

kn1967回答回数2915ベストアンサー獲得回数3012006/11/30 08:26:09

ポイント22pt

$lines = fopen($fname);ではなく

$lines = file("$fname"));です。

できれば、下記のような感じでエラー時の対応を入れたほうが良いと思います。

$fname = "test";

if (false !== ($lines = file("$fname"))) {

  list($year, $mon, $day, $test) = split('[/.-]', $lines);

  echo "$year年$mon月$dat日 $test<br />\n";

} else {

  echo "読み込みに失敗しました。<br />\n";

}

?>

fopenとfileの詳細は下記参照ください。

PHP: fopen - Manual

PHP: file - Manual

id:backupper No.4

backupper回答回数95ベストアンサー獲得回数102006/11/30 09:54:06

ポイント22pt

以下で動くと思います。

<?php
$fname = "test";
$lines = file_get_contents($fname);
list($year, $mon, $day, $test) = split("[¥/¥.¥-]", $lines);
echo "{$year}年{$mon}月{$day}日 {$test}<br />¥n";
?>

fopenを使って同様に書くには、以下の様にします。

<?php
$fname = "test";
$h = fopen($fname, "r");
$lines = fread($h, filesize($fname));
fclose($h);
list($year, $mon, $day, $test) = split("[¥/¥.¥-]", $lines);
echo "{$year}年{$mon}月{$day}日 {$test}<br />¥n";

http://jp2.php.net/manual/ja/function.file-get-contents.php

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません