ようこそ ゲスト さん、新規登録(無料)して気になる疑問を解決しませんか?

質問

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

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

よろしくお願いします。
困り度:
  • 困っています
質問投稿日時:
08/07/03 13:42
この質問に対する回答は締め切られました。

回答良回答20pt

ANo.2 書き換えるファイル(いわゆるデータ)ならコメントが入れないほうがいい気がします。コメントはそのデータの補足というか説明ですし、それなら別途説明書ファイルでも同じディレクトリにおいておけばいいんじゃないでしょうか。

とりあえず既存の関数ではできなさそうなので、自分で作らないといけないですが、個人的には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にしたいところ。
回答者:SHlVA
種類:アドバイス
どんな人:専門家
自信:参考意見
回答日時:
08/07/13 07:50
この回答へのお礼他の(phpでない)ソフトとの連動があって
iniファイルであることが先に確定しちゃってるもので。。。
やっぱ書き戻す方法しかなさそうですね。
SHlVAさんの方法をとらせてもらおうと思います。

回答良回答10pt

ANo.1 iniファイルの場所が判ってるんだし
書式も複雑なわけじゃないし
普通にテキストファイルとしてparseした情報を書き出したら良いんじゃない?
回答者:SAYKA
種類:アドバイス
どんな人:一般人
自信:参考意見
回答日時:
08/07/03 15:35
この回答へのお礼説明不足でした。
parseした情報は
INIファイル内に入れてあっるコメントは取らないですよね?
ですので
parseした奴を書き戻すとコメントが消えちゃうんですよ。
すみませんが
他に、いい方法があったらよろしくお願いします。