• ベストアンサー

fgetsの読み込みは無制限?

$aaTX = @fopen("aa.txt", "r+" ); $aa = fgets( $aaTX); として、fgetsの第2引数を指定しない場合、読み込む文字数は無制限になるのでしょうか? それとも何文字までという制限がある? 無制限に読み込ませたい場合は、file_get_contentsで読み込んだ方が良いでしょうか?

noname#250248
noname#250248
  • PHP
  • 回答数2
  • ありがとう数0

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

すでに、ご回答のある通り、無制限ではありますが、  fgets()は、読み込み開始位置から改行文字が出現する行末までの 読み込みですので、1行のみしか読み込みません。 つまり > $aaTX = @fopen("aa.txt", "r+" ); > $aa = fgets( $aaTX); だけだと、最初の1行目のみしか読んでくれません。 (1行のみファイルということでない限りは行数分だけfgetsを繰り返す必要があります)

その他の回答 (1)

  • t_ohta
  • ベストアンサー率38% (5085/13288)
回答No.1

PHPのマニュアルに記載されています。 『length が指定されない場合は、行末に達するまで読み続けます。』

参考URL:
http://php.net/manual/ja/function.fgets.php

関連するQ&A

  • fgetsでエラー

     C言語を勉強しているものです。 fgetsやfscanfで第一引数にダブルポインタ変数を用いるとエラーが出ます。 なぜそうなるんでしょうか? ダブルポインタだと不可能なんでしょうか? char **moji; FILE *fp; moji = (char**)malloc(sizeof(char*) * 128 * 256); fp = fopen("test.txt","r+"); fgets(moji[0], 26, fp); //ここでエラー mojiを[0]で指定してあげてもエラーなんでしょうか? fgetsだけでなくfscanfでもそうです。 どうしてそうなんるんでしょう?

  • 【PHP】テキストファイル内の数字に加算する方法

    PHPでカウンターを作ってみたんですが、たまに数字が勝手にリセットされて困っています。 $aa = file_get_contents("aa.txt"); $aa = $aa + 1; $aaTX = fopen("aa.txt", "w+"); fwrite($aaTX , $aa); fclose($aaTX ); という形にしてるんですが、おそらく複数の閲覧者が同時にアクセスしたときに、fopen("aa.txt", "w+")で真っ白になってるものをfile_get_contentsで読み込んでしまい、リセットされた形になってしまうのかなと。 これ、fopenを使わず、aa.txt内の数字に直接加算させる方法とかないのでしょうか? fopenはすでに記されているものの前後に文字列を加えるというようなことはできるようですが、書かれている数字に加算したり減算したりはできませんよね? 他に直接計算することができるような命令とかありますか? せめて、このリセットが防げるような方法だけでもあれば助かるのですが…。

    • ベストアンサー
    • PHP
  • fgets()でURLを読み込むとエラーになる

    -----url.txt----- http://www.google.co.jp http://www.goo.ne.jp/ ----------------- -----test.php------ $urltxt = fopen("url.txt", "r"); $url = fgets($urltxt); $html = fopen($url, "r"); -------------------- のように、各行にURLが書いてあるテキストファイルを一行ずつ読み込んで、それを引数にしてfopen()したところ、 全てfailed to open stream: HTTP request failed! HTTP/1.0 404 Not Foundとなってしまいます。 print($url)では正しくURLが出力されますし、$urlへの代入を直接$url = "http://www.goo.ne.jp/"としてやれば正常に動作するので、何が原因か分かりません。 テキストファイルは全て半角英数のアドレスのみで、シフトJISで保存しています。 どなたか原因が分かる方、ご教授ください。

    • ベストアンサー
    • PHP
  • phpで二重書込みできないプログラムを作りたい

    PHP初心者です。 テキストファイルに、ある文字列を書き込むプログラムを作ろうとしています。 ファイル内容に同じ文字列があれば書き込まず、 同じ文字列が無ければファイルに書き込むという プログラムを作りたいのですが、 うまくいきません。 どなたかアドバイスをお願いします。 <?php $name = "文字列"; $fp = @fopen("file.txt", "r"); $contents = @file_get_contents($fp); if(ereg($name, $contents)) { print "登録済みです。" ; } else { $fpa = @fopen("file.txt", "a"); fputs($fpa, "$name\n"); fclose($fpa); print "登録しました。"; } fclose($fp); ?>

    • 締切済み
    • PHP
  • 外部ファイルの読み込み

    3つのファイルが同じディレクトリに入っているのですが、「main.php」を開くとphpがそのままテキストで表示されてしまいます。 phpを読み込んでhtml化した状態で表示するにはどうしたらいいでしょうか? test.txt ----------- テスト ----------- test.php ----------- <?PHP file_get_contents("test.txt"); ?> ----------- main.php ----------- <?PHP file_get_contents("test.php"); ?> ----------- main.phpを開くと ----------- <?PHP file_get_contents("test.txt"); ?> ----------- と表示されてしまいます。

    • ベストアンサー
    • PHP
  • ファイルの読み込み方法について

    サーバファイルなどを読み込む際、PHPではバッファを設けたfopen()、file_get_contents()という2つの方法のどちらかが採用されると思います。 しかし、ファイル内容などを全て取得したい場合、どちらも同じ動作をし、かつfile_get_contents()の方が簡潔な記述になります。 よく何かのサンプルだとfopen()を利用してバッファ指定で全ての内容を取得しているのですが、それに意図はあるのでしょうか? 明確な答えが知りたいです。

    • ベストアンサー
    • PHP
  • fgets で値が取得できない

    fopen , fgets に関して質問させてください。 現在「readme」というファイルを UTF-8 にて開こうとしております。 fopen でファイルは開けているようなのですが、fgets を呼び出した際に以下の様なメッセージが出て異常終了してしまいます。 『Microsoft Visual Studio C ランタイム ライブラリは Sample.exe に致命的なエラーを検出しました。 [中断] をクリックしてプログラムをデバッグするか、または [続行] をクリックしてプログラムを終了してください。』 UTF-8 を指定しない場合は上手く動いているようです。 UTF-8 の時は特殊な取り出し方をしなければならないのでしょうか? Visual C++ 2008 Express Edhition の デバックモードで動かしています。 ****************************** 1 : FILE *file1; 2 : char s[256]; 3 : 4 : file1 = fopen( "C:\\readme", "r, ccs=UTF-8"); 5 : while (fgets(s, 256, file1) != NULL) 6 : { 7 : printf("%s", s); 8 : } ******************************

  • fgetsで2行目から文字化け

    fgetsでファイルを一行ずつ読み込みたいのですが、二行目以降が文字化けしてしまいます。 ******* ソース ******* #include <windows.h> #include <stdio.h> FILE *fp; if ((fp = fopen("textlist.txt", "r")) == NULL){ MessageBox(NULL, TEXT("ファイルを開けません"), NULL, NULL); exit (1); } while (1) { TCHAR buf[128] = {0}; if (fgets(buf, sizeof(buf), fp) == NULL) break; MessageBox(NULL,buf,NULL,NULL); } fclose(fp); ***** textlist.txt ***** あいうえお かきくけこ さしすせそ メッセージボックスの一回目は正しく"あいうえお"と表示されますが、二回目・三回目は文字化けしています。 最終的に一行ずつ分けて配列に入れたいので、fgetsで出来たらと思っています。 よろしくお願いします。

  • file_get_contents関数で引数をURLにすれば、HTML

    file_get_contents関数で引数をURLにすれば、HTMLソースを取得できるのはわかるのですが、 例えば、URLが制限 255バイト?を超える場合、GETでなくPOSTタイプでHTMLを取得したいのですが、file_get_contents関数のように手軽にPOSTタイプで取得できる関数はありますか? PHP5を使っています。

    • 締切済み
    • PHP
  • fgetsの使い方について

    こんばんわ。phpでラジオボタンを使用して投票フォームを作っています。 投票した値をログファイルに書き込んで4項目をカウントできるように格納したいのですが、エラーも出ずにスルーして原因がわからず困っています。 イメージでは ログファイル↓ 24 もちろん 11 するかも 5  わからない 12 ない 問題のソースは以下の通りです。 $write = "$radiobutton"."\n"; $fp = fopen("../php/test1.txt","a+"); $line1=fgets($fp); $line2=fgets($fp); $line3=fgets($fp); $line4=fgets($fp); fputs($fp,$write); fclose($fp); print "fgets1回目=".$line1."<br>\n"; print "fgets2回目=".$line2."<br><br>\n"; print "fgets3回目=".$line3."<br><br><br>\n"; print "fgets4回目=".$line4."<br><br><br><br>\n"; わかる方いましたらご教授お願いします。

    • ベストアンサー
    • PHP