• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:読み込んだファイル中の文字列を、DBで取得した値に置換したい)

【解決策求む】PHPを使ってファイル中の文字列をDBで取得した値に置換する方法

このQ&Aのポイント
  • PHPの学習中に発生した問題です。
  • ファイル中の特定の文字列をDBで取得した値に置換したいが、正しい結果が得られません。
  • 解決策をご教示いただければ幸いです。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

なんどもスイマセン。 こんな感じのがいいかも。 while( ... ) { $buffer = ""; //初期化 $string = fgets($file); foreach( ... ) { $buffer .= ",{$value}"; } $html = str_replace("AAAA", $buffer, $string); echo $html ; } ほんとに何度もすいません。 つい真剣になってしまいました。

alpha-alfa
質問者

お礼

ご丁寧に回答いただき、ありがとうございます。 大変、参考になりました。 以下のソースにて無事、動作しました。 ------------------------------------------------- $sv = "localhost"; $dbname = "database"; $user = "********"; $pass = "********"; $conn = mysql_connect($sv, $user, $pass) or die("接続エラー"); mysql_select_db($dbname) or die("接続エラー"); $sql = "SELECT * FROM link_tb ORDER BY id DESC LIMIT 5;"; $res = mysql_query($sql, $conn) or die("データ取得エラー"); while($row = mysql_fetch_array($res, MYSQL_ASSOC)) { $replace .= $row["date"]. $row["name"]; } $file = fopen("test.html", "r") or die ("ファイルオープンエラー"); while(!feof($file)) { $string = fgets($file); $buffer = str_replace("AAAA", $replace, $string); echo $buffer; } fclose($file); mysql_close($conn); ------------------------------------------------- 結局、foreachを使わずして完成してしまいました... 本当にありがとうございました。

その他の回答 (2)

回答No.2

ごめんなさい、2は間違ってますね。 自信満々の口調ですいません。 別に$stringは上書きしてないのですから、大丈夫でした。 ただ$bufferを毎回上書きしているので、そこは問題ですね。 こんな感じではどうでしょう。 while( ... ) { $buffer = ""; //初期化 foreach( ... ) { $buffer .= str_replace("AAAA", $value, $string); } echo $buffer; }

回答No.1

ざっと見たところ、複数の原因がありそうです。 1.その肝心のhtmlファイルの読み込みが出来てない気がします。 $file= fopen( "ファイルのパス", "r" ); が抜けていませんか。 2.このforeachはうまく動いてますか? ↓ foreach($row as $key => $value) { $buffer = str_replace("AAAA", $value, $string); } ↑ なぜなら、1回目のsrt_replaceで$string中のAAAAがなくなってしまうじゃないですか。 2~5回目の時にはもう、AAAAが存在しないのでは? 3.DBから値はうまく取れているのでしょうか。 mysql_fetch_arrayのマニュアルを見てみてください。 http://jp.php.net/mysql_fetch_array $row = mysql_fetch_array($res, MYSQL_ASSOC); ではなくて while ($row = mysql_fetch_array($res, MYSQL_ASSOC)) { //処理 } の様にしないと、一列分の値しかとれなさそうですよね。 この部分を修正すると foreach($row as $key => $value) の部分も修正しなくてはいけないと思います。 これらの原因を踏まえて、 もう一度設計しなおしてみると良いと思います。 あとは、変数にちゃんと値が入っているかをガンガンチェックする事が出来たら、結構1人で解決できますよ。 echo $hensuu;//配列じゃないとき var_dump($hairetu);//配列のとき 知ってたらごめんなさい。