- ベストアンサー
独自INIファイルの操作をしたいんですが
phpでaaa.iniの操作をしたいのですが 例えば [section] key1=aaaaa の「aaaaa」を書き換えたいのです。 (力量不足もありますが) 項目が複数あるので単純なfwriteでは対応できそうになく 出来れば win32apiのWritePrivateProfileStringのような 動かし方が出来ればいいのですが 読み込みは parse_ini_fileで出来そうなのですが 更新の方は方法が見つからなくて よろしくお願いします。
- みんなの回答 (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にしたいところ。
その他の回答 (1)
- SAYKA
- ベストアンサー率34% (944/2776)
iniファイルの場所が判ってるんだし 書式も複雑なわけじゃないし 普通にテキストファイルとしてparseした情報を書き出したら良いんじゃない?
お礼
説明不足でした。 parseした情報は INIファイル内に入れてあっるコメントは取らないですよね? ですので parseした奴を書き戻すとコメントが消えちゃうんですよ。 すみませんが 他に、いい方法があったらよろしくお願いします。
お礼
他の(phpでない)ソフトとの連動があって iniファイルであることが先に確定しちゃってるもので。。。 やっぱ書き戻す方法しかなさそうですね。 SHlVAさんの方法をとらせてもらおうと思います。