前提・実現したいこと
フォームから受け取ったデータをテンプレート用に用意したファイル(org.php)を利用し、foreachを利用してstr_replace しようと思ったのですがデータが複数ある場合、初めの1つのみの置換になってしまいます。
全てのデータを置換するにはどうすればいいでしょうか?
ちなみに、fwrite()で直接書こうとしましたが、そちらもやり方がよくわかりませんでした。
$_POST['title'][$key].$_POST['desc'][$key].$_FILES['file']['name'][$key]はなるべくひとまとまりにしたいです。
発生している問題・エラーメッセージ
エラーメッセージ 特になし。
該当のソースコード
php
1 2 //書き込みオリジナルファイル読み込み 3$files=file_get_contents('org.php'); 4 5 //'a'+乱数を生成してファイル名に 6$fileName = "file/admin/".htmlspecialchars($_POST['main'],ENT_QUOTES).rand( 1000000, 9999999) .date("Ymd"); 7 8//書き込みオリジナルファイルから変更点を置き換える 9$files=str_replace("たいとる",htmlspecialchars($_POST['main'],ENT_QUOTES),$files); 10$files=str_replace("disciptions",htmlspecialchars($_POST['main'],ENT_QUOTES),$files); 11$files=str_replace("説明",htmlspecialchars($_POST['comment'],ENT_QUOTES),$files); 12foreach($_POST['title'] as $key=>$title) 13 { 14$files=str_replace("ファイル",$_POST['title'][$key].$_POST['desc'][$key].$_FILES['file']['name'][$key].'</br>',$files); 15 } 16 /* 17$files=str_replace("ファイル",htmlspecialchars($_FILES['file']['name'][0],ENT_QUOTES),$files); 18*/ 19 20//文字コードをUTFに変換 21$files = mb_convert_encoding($files, "UTF-8","AUTO"); 22 23//ファイル名に拡張子を付ける 24$fileName = $fileName. ".php"; 25 26//ファイル生成&書き込み 27$handle = fopen($fileName, 'w'); 28 29fwrite( $handle, $files); 30fclose( $handle ); 31 32// メッセージ表示 33print $fileName. "を生成しました。<br/>\n"; 34 35 36print '<a href="'.$fileName.'">'.$fileName. '</a>'."をのリンク。<br/>\n"; 37 38var_dump($_POST['title'],$_POST['desc'],$_FILES['file']['name']);
php
1org.php 2<!DOCTYPE html> 3<html> 4<head> 5 <meta charset="utf-8"> 6 <title>たいとる</title> 7 8 9</head> 10<style> 11 12</style> 13<body> 14<a href="https://teratail.com/questions/14413">参考</a> 15 16 <h1>たいとるについて</h1> 17 <p>説明</p> 18 19 <p>ファイル</p> 20 21</body> 22</html>
回答1件
あなたの回答
tips
プレビュー