• 締切済み

fopen()関数を使用し、最後から二行目に保存する

こんにちは。 PHPで、データをfopen()関数を使用し、 <?php ・ ・(途中略) ・ ?> のうちの、?>の一つ上の行にデータを保存したいのですが、 可能ですか? 要は、ここです。 <?php ・ ・ ・ $data = "●●"; // ←ここ ?> 今のところ、最後の行に保存する方法しか知らないので・・・。 $dataopen = fopen ("./data.php", "a"); fwrite ($dataopen, "$data = $_POST["data"];"); fwrite ($dataopen, "\n"); fclose ($dataopen); どうか、ご教授くだされば幸いです。

  • PHP
  • 回答数1
  • ありがとう数1

みんなの回答

  • dell_OK
  • ベストアンサー率13% (740/5647)
回答No.1

こんな感じかな。 私がテストしたソースです。 $datastr = date("Y/m/d H:i:s");//$_POSTの代用 $filename = "./data.php";//複数回出現するので変数でファイル名を管理 $filedata = file($filename);//データファイルの全体を配列へ読み込む $datacount = count($filedata);//データファイルの行数 $filedata[$datacount - 2] = '$data = "'.$datastr.'";'."\n";//最後から2行目を変更 file_put_contents($filename,$filedata);//データファイルへ出力(※PHP5以降) PHPのバージョンが5以降なら file_put_contents が使えます。 出力データが配列の場合でも一度に出力してくれるので便利です。 もし4以前のバージョンをご利用でしたら、 (※PHP5以降)の処理を以下のようにしてください。 $dataopen = fopen ($filename, "w");//データファイルを上書きモードで開く fwrite ($dataopen, implode($filedata));//配列を結合して、データファイルへ出力 fclose ($dataopen);//データファイルを閉じる

関連するQ&A

  • PHPのfrrite関数

    お世話になります。 PHPのfwrite関数について質問です。 下記の様な記述で、アクセスがあった際に$lineをdata.txtに保存する場合、同じタイミングで複数のアクセスがあった場合などにエラーは起きないのでしょうか? エラーが起こりうるのであれば、その対処方法を教えて頂きたいです。 $fp = fopen("data.txt", "w"); fwrite($fp, $line); fclose($fp);

    • 締切済み
    • PHP
  • fopenの使い方?(画像の保存)

    お世話になります。 exif_thumbnailで取得したサムネイル画像をjpgファイルとして元画像ファイルとは別名で保存したいと考えています。 テストで以下のようなコードを作成しましたが、うまく保存できません。fopenの基本的な使い方が間違っているのではないかと思っていますが、どこがおかしいのかわからずにおります。 <?php $img = exif_thumbnail("./test.jpg", $width, $height, $type); $handle = fopen ("./thumb.jpg", 'a'); fwrite($handle, $img); ?> ちなみにPHPのバージョンは5.0.3です。 echo($img);でサムネイル画像が取得できていることは確認できております。 要はtest.jpg → $img → thumb.jpgとできればいいのですが。。 どうしたらうまく保存できますでしょうか。 よろしくお願いします。

    • 締切済み
    • PHP
  • fopen()関数

    こんにちは。 PHPで、fopen()関数を使用し、別ファイルにでーたを保存しているのですが、 fopen ("ファイル名", "a"); とやると、ファイルに追記されますよね。 この追記を、ファイルの一番最初に行いたいのです。 一番最初に書き込みをできるということで、 fopen ("ファイル名", "r+"); なども試してみたのですが、 その追記された文字数だけ最初側の文字が消えてしまい、追記は無理でした。 rewind()関数も使用したのですが、ダメでした。 何方か、ファイルの最初に、既に書き込まれている文字を消さずに追記する方法をご教授くだされば幸いです。

    • ベストアンサー
    • PHP
  • fopenしてくれない。。。

    こんにちは。PHP初級者です。 postgresqlに入れたデータをCSVファイルに書き込んで、出力してみたいと思って以下のプログラムを作ってみました。 $file_name ="insatu.csv"; //データベースから呼び出し以下の$arrayへいれるデータは省略します。 //今回は1行のみのデータを入力プログラムになってますが、本当は何行もやるプログラムとなってます。 $array = compact("a","b","c","d","e","f","g","h","i","j","k","l"); $string = implode("," , $array); $file = fopen($file_name, "a") or die ("openエラー $file_name"); flock($file, LOCK_EX); fputs($file, $string."\n"); flock($file, LOCK_UN); fclose($file); $file = fopen($file_name, "r"); while($array = fgetcsv($file, 1000, ",")){ echo "<hr> \n"; for($i=0; $i< count($array); $i++){ echo $array[$i]."<br>"; } } fclose($file); なぜか最初の fopenで dieの方へ行って OPENエラーメッセージが出てきます。 この作業をするためには何かあらかじめ入れなくてはいけない構文とかあるんでしょうか?何か間違っていますでしょうか? それともphp.iniを設定するとかしなくてはいけないんでしょうか? php5を使用してますが、php.iniやphp.ini-distはともに見つからず。 困り果ててます。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • PHPで外部ファイルを読み込むときの行の最後の改行の消し方について

    PHPについての質問です。 初歩的な質問ですがどうかお付き合いいただけたらと思います。 PHPで外部ファイルを読み込む際、csvファイルなどを1行ずつ読み込んだ場合、行の最後の改行まで代入されます。 例えば ////test.php/////////////// <?php $filename = list.csv; $fp = @fopen($filename,"r"); $data = @file($filename); @fclose($fp); ?> //////////////////////////// ////list.csv//////////////// 1,2,3,4,5 6,7,8,9,10 //////////////////////////// とする場合 $data[0]には 1,2,3,4,5 プラス改行のデータ $data[1]には 6,7,8,9,10 プラス改行のデータ が代入されます。 この改行のデータを除くためにはどのようにすればよいですか? 初歩的な質問で申し訳ないのですが、よろしくお願いします。

    • 締切済み
    • PHP
  • 最後の行だけを取り出す

    fopen関数でテキストファイルを開き、 テキストファイルの最後の行だけを利用する効率のいい方法はないでしょうか。 どなたか詳しい方教えてください。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • ファイルに書き込む時の負荷について

    PHPバージョン5.2.4を使っています。 次のような // ------------------------------------ $fp = fopen("data.txt", "w"); $buf = ""; for ($i = 1; $i <= 3; $i++) { $buf .= "aaa$i\n"; } fwrite($fp, $buf); fclose($fp); // ------------------------------------ という変数にいったん保存してから書き込む場合と // ------------------------------------ $fp = fopen("data.txt", "w"); for ($i = 1; $i <= 3; $i++) { $buf = "aaa$i\n"; fwrite($fp, $buf); } fclose($fp); // ------------------------------------ というその都度ファイルに書き込む場合とでは どちらが良い悪いというのはあるのでしょうか? たとえばこちらのやり方は負荷がかかるなど ループが多くなっていった場合に違いがでてくるのでしょうか?

    • ベストアンサー
    • PHP
  • 【PHP XMLファイルの最終行を削除する方法】

    【PHP XMLファイルの最終行を削除する方法】 こんにちは。お世話になります。XMLファイルの最終行を削除する方法を教えていただけないでしょうか。 例えば、以下の【sample.xml】というファイルの -------------------- <pencli> <color>赤</color><size>60</size> <color>青</color><size>80</size> </pencli> -------------------- の</pencli>だけ削除する方法が知りたいです。 以下のスクリプトでフォームからPOSTで受け取った内容を書き込むことはできたのですが、 削除の方法が、調べてもどうしてもうまくいかず相談させていただきました。 どうぞよろしくお願いいたします。 <?php $color= $_POST["color"]; $size= $_POST["size"]; $xml = ""; $xml .= "\r\n"; $xml .= "<color>" . $color. "</color>"; $xml .= "<size>" . $size. "</size>"; $xml .= "\r\n"; $xml .= "</pencil>"; $fp = fopen("sample.xml","a+"); fwrite($fp,$xml); fclose($fp); ?>

    • 締切済み
    • PHP
  • fopenでファイルが開かない場合・・

    現在あるサーバ上で問題なく利用できるファイル関数のfopenが、別のサーバに変えたらエラーになってしまいました。 if( ( $fp = fopen( $dir.$datefile ,"w" ) ) != FALSE ){ print "OK"; exit; // fwrite( $fp , $new_data ); // @chmod( $dir.$datefile , 0755 ); } else { print "no"; exit; } 上記で else に入ってしまいます。 なにか原因があるのでしょうか、まったくわからず困っています。 どなたかご教授下さい。

    • ベストアンサー
    • PHP
  • PHP 別ドメインへのファイル保存法

    phpプログラムでわからないことがあるのですが。 レンタルサーバを2つ(AとB)もっているとします。 AからBにファイルを保存したいのです。 これは可能なのでしょうか、 可能でしたらコードの記述法を教えていただきたいのです。 たとえばこのような感じです。エラーになります。 <?php $write_data = "123456"; if($fn = fopen("ftp://b@b.com/public_html/b.com/test.data", 'a')) { fwrite( $fn, $write_data); fclose($fn); } ?>

    • ベストアンサー
    • PHP