質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

3回答

9602閲覧

phpで、ファイルのx行目だけを書き換えたいです

phphone

総合スコア28

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2015/10/11 22:16

phpで、ファイルの特定の行を書き換えたいため、調べてみると、全部\n区切りの配列にしてから、必要な要素を書き換えろ、とありました。
その為、以下のようにしてみました。

php

1234 $file_name = "sakuhin.html"; 5 6 $ret_array = file( $file_name ); 7 8 9$ret_array[3] = "aaaaa"; 101112

↓"sakuhin.html"の内容(書き換え前)

html

1<h1></h1> 2<h2>投稿広場</h2> 3<a href="0.html"></a><br><br> 4<a href="1.html"></a><br><br> 5<a href="2.html"></a><br><br> 6<a href="3.html"></a><br><br> 7<a href="4.html"></a><br><br> 8<a href="5.html"></a><br><br> 9<a href="6.html"></a><br><br> 10<a href="7.html"></a><br><br> 11<a href="8.html"></a><br><br> 12<a href="9.html"></a><br><br> 13<a href="10.html"></a><br><br> 14<a href="11.html"></a><br><br> 15<a href="12.html"></a><br><br> 16<a href="13.html"></a><br><br> 17<a href="14.html"></a><br><br> 18<a href="15.html"></a><br><br> 19<a href="16.html"></a><br><br> 20<a href="17.html"></a><br><br> 21<a href="18.html"></a><br><br> 22<a href="19.html"></a><br><br> 23<a href="20.html"></a><br><br> 24<a href="21.html"></a><br><br> 25<a href="22.html"></a><br><br> 26<a href="23.html"></a><br><br> 27<a href="24.html"></a><br><br> 28<a href="25.html"></a><br><br> 29<a href="26.html"></a><br><br> 30<a href="27.html"></a><br><br> 31<a href="28.html"></a><br><br> 32<a href="29.html"></a><br><br>

そして、書き換え後の"sakuhin.html"は

html

125

という、謎の数字が書き込まてしまいます。
本当は、

html

1<h1></h1> 2<h2>投稿広場</h2> 3aaaaa 4<a href="1.html"></a><br><br> 5<a href="2.html"></a><br><br> 6<a href="3.html"></a><br><br> 789

としたいのですが、どうすればよいのでしょうか?

どうか、ご教授願います。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

今更ですが ファイルの内容を配列に変換し配列の中身を出力する時に使うみたいです
例2) ファイル「c:/temp/test.txt」に配列情報を出力します。

<?php $filename = "c:/temp/test.txt"; $str = array("aaa\n","bbb\n","ccc\n"); print "size:" . file_put_contents( $filename, $str ); ?>

ファイル出力結果
aaa
bbb
ccc

投稿2015/12/23 14:38

KAKAKOKO12

総合スコア10

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

KAKAKOKO12

2015/12/23 14:40

配列の内容を指定したファイルに出力するでしたね
guest

0

自分の環境で行ったところ、問題なく動いていました。
一応コードを載せます。

php

1<!DOCTYPE html> 2<html> 3<head> 4<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" /> 5<title>PHPテスト</title> 6</head> 7<body> 8 9<p>PHPのテスト</p> 10 11<p> 12<?php 13$file_name = "sakuhin.html"; 14$ret_array = file( $file_name ); 15$ret_array[3] = "aaaaa\n"; 16file_put_contents($file_name, $ret_array); 17?> 18</p> 19 20</body> 21</html>

(注:sakuhin.htmlの書き込み権限を与えておく必要があります)

投稿2015/10/12 01:55

K_S_

総合スコア419

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

phphone

2015/10/12 03:19

ありがとうございました! 鍵は 「file_put_contents($file_name, $ret_array);」 でした。 ところで、file_put_contentsというのはどういう物でしょうか?(調べてみましたが難しくて・・・)
TakuyaMitamura

2015/10/12 13:11

file_put_contentsは fopen(ファイルを開く) fwrite(ファイルへ書き込む) fclose(ファイルを閉じる) の一連処理をいちどきに行う関数ですね。 上記もそれぞれphpの標準関数です。 通常ファイルの書き込み時は上記の3関数呼び出しがセットになりますが、file_put_contentsを呼び出すことで、内部的には同じことが行われるようです。 平たく言うと、ファイル名とファイルの内容を指定して、サーバーのディスク上に書き込む関数。になると思います。
guest

0

ここに書かれていない部分であるファイルへの書き込み部分がおかしいと思われます。
file_put_contents()は、配列も引数に取れるので、file_put_contents("ファイル名",$ret_array);でいいかと。
(ちゃんとやるには戻り値がFALSEでないことを確認する必要がありますが)

あと、$ret_array[3] = "aaaaa";は、$ret_array[3] = "aaaaa\n";とすべきでしょうね。

投稿2015/10/11 22:32

編集2015/10/12 02:07
otn

総合スコア84423

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

phphone

2015/10/12 02:24

ありがとうございました。 $ret_array[3] = "aaaaa\n"; に訂正しました。 また、謎の数字の原因は、 phpファイルで、上の方で $file_name = "num.html"; という別のファイルを指定していたことが原因でした。 その為、 $file_name_2 という変数にして代用して見たら、今度はsakuhin.htmlが動かなくなってしまいました。
otn

2015/10/12 03:44

いずれにせよ、質問に書かれていない部分がおかしいです。 書かれていないものには指摘のしようがない。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問