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

phpでaaa.iniの操作をしたいのですが
例えば
[section]
key1=aaaaa
の「aaaaa」を書き換えたいのです。
(力量不足もありますが)
項目が複数あるので単純なfwriteでは対応できそうになく
出来れば
win32apiのWritePrivateProfileStringのような
動かし方が出来ればいいのですが

読み込みは
parse_ini_fileで出来そうなのですが
更新の方は方法が見つからなくて

よろしくお願いします。

A 回答 (2件)

iniファイルの場所が判ってるんだし


書式も複雑なわけじゃないし
普通にテキストファイルとしてparseした情報を書き出したら良いんじゃない?
    • good
    • 0
この回答へのお礼

説明不足でした。
parseした情報は
INIファイル内に入れてあっるコメントは取らないですよね?
ですので
parseした奴を書き戻すとコメントが消えちゃうんですよ。
すみませんが
他に、いい方法があったらよろしくお願いします。

お礼日時:2008/07/04 12:08

書き換えるファイル(いわゆるデータ)ならコメントが入れないほうがいい気がします。

コメントはそのデータの補足というか説明ですし、それなら別途説明書ファイルでも同じディレクトリにおいておけばいいんじゃないでしょうか。

とりあえず既存の関数ではできなさそうなので、自分で作らないといけないですが、個人的にはSAYKAさんのおっしゃるように、parseして変更した物を、そのまま書き出すのが一番現実的かと。
もしどうしてもコメントを残したままやりたいなら、

どうにかして、コメント部分とその位置を抜き出して、それもいっしょに書き込む。

もしくは、

変更部分だけど書き直す、
key1=aaaaa

key1=bbbbb
にしたいなら
変更部分の「変更前」と「変更後」をそれぞれ保存しておいて、

$filedata = file_get_contents("file.ini");
$filedata = str_replace("key1=aaaaa","key1=bbbbb",$filedata);
file_put_contents("file.ini",$filedata);

という感じでしょうか。

私ならもっと柔軟性のあるXMLにしたいところ。
    • good
    • 0
この回答へのお礼

他の(phpでない)ソフトとの連動があって
iniファイルであることが先に確定しちゃってるもので。。。
やっぱ書き戻す方法しかなさそうですね。
SHlVAさんの方法をとらせてもらおうと思います。

お礼日時:2008/07/14 10:05

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