###実現したいこと
①HTML内にあるリスト(URL文字列が入ってる)を配列で取得
②配列データをajaxでPHPに送信
③PHP側で、受け取った配列分回して一つずつ同じ階層に指定したファイル名でファイルを作成
④作成されたファイルに、URL先のファイル中身をstr_replaceをしてから差し込む
問題は④で起きています。
###問題のコード
HTML
1<ul class="list"> 2 <li>http://testtesttets.jp/hoge01/huga/yymmdd.html</li> 3 <li>http://testtesttets.jp/hoge02/huga/yymmdd.html</li> 4 <li>http://testtesttets.jp/hoge03/huga/yymmdd.html</li> 5 <li>http://testtesttets.jp/hoge04/huga/yymmdd.html</li> 6 <li>http://testtesttets.jp/hoge05/huga/yymmdd.html</li> 7</ul>
js
1//li表示されたものを配列化 2var listData = $('.list li').map(function () { 3 //フルパスを相対パスに置換 4 return $(this).text().replace('http://testtesttets.jp', '../..'); 5}).get(); 6console.table(listData); 7 8//更新情報 9var data = { 10 'listData': listData //配列化されたURLリスト 11}; 12 13//ajax 14$.ajax({ 15 url: 'form.php', 16 type: 'POST', 17 data: data, 18 success: function (data) { 19 console.log(data); 20 }, 21 error: function (data) { 22 alert("ajax送信エラー") 23 } 24});
PHP
1$directory_path = $_POST['listData']; //URLが配列で入ってるデータ 2$boforeText = 'アハハ'; //書き換える前のテキスト 3$afterText = 'ウフフ'; //書き換え後のテキスト 4$updated_date = '190101'; //更新日 5$updated_date = $updated_date.'.html'; //更新ファイル名 6 7//foreachはfor文のように繰り返す命令 8foreach($directory_path as $directory_path){ //$directory_pathの先頭から1つずつ$directory_pathに代入する 9 10 $pathData = pathinfo($directory_path); 11 //書き込み先ファイル名 12 $writing_file = $pathData["dirname"].'/'; 13 14 $content = file_get_contents($directory_path); //コードを取得 15 $replace = str_replace($boforeText, $afterText, $content); //取得したコードの「アハハ」を「ウフフ」に置換 16 file_put_contents($writing_file.$updated_date, $replace); //作成・又は上書き 17 18 echo $directory_path; //console.logで見る用 19}
$directory_pathをconsoleで確認するときちんとすべてのURLリストが受け取れていて、190101.htmlという名前のファイルの狙った階層にきちんと作成もされています。
ただ、コードの中身だけが取得・差し込みができておらず原因がわからないためご教示いただければと思います。
###追記
実際サーバー内にあるファイル名は「yymmdd.html」ではありません。あくまでダミーです。
例えば、
/hoge01/huga/という階層には170501.htmlというファイルがあったり
/hoge02/huga/という階層には180910.htmlというファイルがあったり
/hoge03/huga/という階層には151011.htmlというファイルがあったりします
この階層、またファイルが多数存在しており、
<li>タグではそのサーバー内に存在するファイルをいくつか指定するものです。 ※この<li>タグに入るURLは変動します。/hoge01/huga/にある170501.htmlのコードを<li>で指定し、
そのコードを持ってくる。
持ってきたものを別のファイル名として同一階層に書き出し
といった流れを再現しようとしています。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/05/31 02:53
2019/05/31 02:54
2019/05/31 03:06
2019/05/31 03:13
2019/05/31 03:26
2019/05/31 03:49
2019/05/31 03:52
2019/05/31 04:32
2019/05/31 04:34