• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:外部html読み→書き換え→上書き保存をしたい)

外部html読み→書き換え→上書き保存をしたい

このQ&Aのポイント
  • 外部htmlを読み込んで、書き換えて、上書き保存したい。詳しい方いらっしゃいましたら教えていただけますでしょうか。
  • index.php内で、ボタンをクリックするとtarget.htmlが読み込まれ、target.htmlの内容が書き換えられ、上書き保存される処理を行いたい。
  • どんな内容に書き換えるかは全てindex.php内のphpに記述したい。可能でしょうか?

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

  • ベストアンサー
  • shimix
  • ベストアンサー率54% (865/1590)
回答No.1

「外部html」という表現がどういう意味なのかわかりませんが、target.htmlがindex.phpから「読み書きできる」のであれば可能です。 読み書きできるのであれば、普通にファイル(テキストファイル)として扱えばいいです。それ以上でも以下でもありません。 http://jp2.php.net/manual/ja/ref.filesystem.php file_get_contents()やfile()でまとめて読み込んでおいて、必要な書き替え処理を行ってからfopen()→fputs()→fclose()でしょうかね。 ちなみに「外部html」というのが「まったくの別サーバのファイル」であれば、当然ながら書き込みできませんので無理です(もし書き込めたら、それは改竄といいます)。

noname#179453
質問者

お礼

頂いたアドバイスをもとに無事できました。 ありがとうございました! 最終的に以下のような処理にしました。 $beforeHtml //元のhtml $afterHtml // 元のhtmlを書き換えた新しいhtml $replace //変換したい場所の記号 $text //記号と置き換える文字 $read = fopen("new/".$beforeHtml, "r"); $write = fopen("new/".$afterHtml, "w"); mb_regex_encoding("UTF-8"); while( !feof ($read) ) { $line = rtrim(fgets($read)); $line = mb_ereg_replace($replace, $text, $line); fputs($write, $line."\n"); } fclose($write); fclose($read);

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 外部htmlを読み込み→書き換え→上書き保存したい

    java scriptで、外部htmlを読み込んで、書き換えて、上書き保存したいのですが 可能でしょうか? それともPHPですべきでしょうか? PHPが全く分からないので、できればjsでできたら嬉しいと思い 調べたのですがなかなか見つからず相談させていただきました。 ディレクトリ構造は index.html →jsが記述されたhtml target.html →書き換えたいhtml です。 index.html内で、ボタンをクリックすると target.htmlが読み込まれ、内容を書き換え、上書き保存するという 処理を行いたいです。 どんな内容に書き換えるとかは全て index.html内のjsに記述したいです。 こんなイメージなのですが、可能でしょうか? 全く見当外れでしょうか。。? ご存知の方いらっしゃいましたら 何卒ご教授のほど、よろしくお願いいたします。

  • 上書き保存のエラー?

    上書き保存をする際、「ファイルがホームページビルダーの外部で変更されました。再ロードしますか?」というメッセージが出てきます。これはどういう意味でしょうか? また、index.htmlとindex.bakの二つが存在する理由はなんですか?? 教えてください。

  • ボタンのクリック数を合計保存するPHPプログラム

    サイト訪問者が任意でボタンをクリックしてくれた数をカウントし、合計にするPHPをどなたか教えていただけないでしょうか。 (PHPをはじめたばかりです、よろしくお願いいたします。) index.phpのボタンをクリックすると、クリック回数をnumber.phpに上書き保存し、更にクリックされたら新しくクリックされた回数+number.phpの数の合計を上書きする、というスクリプトを書こうとしています。 index.php ここから---------------------------------------- <html> <body> <form action="index.php" method="get"> <input type="submit" value="クリック"> 合計<input type="text" name="munber" value="<?php $file = "munber.php"; @readfile($file);?> "> </form> </body> </html> index.php ここまで---------------------------------------- number.phpは単に数が一行あるだけです。(例として 5 ) 上記のindex.phpでは、ただボタンがあり、ただnumber.phpの数(5)を表示しているだけで、足し算は行われません。(画像参照) これをどのように書き換えると、ボタンをクリックしたらnumber.php + 1 を行い、number.phpの値も書き換える、というプログラムになるでしょうか。 ※アクセス解析ではないので、IPやリファラなどは関係なく、(誰が何回でも)ボタンをクリックした回数を単純にカウントする数式が欲しいです。 どうぞよろしくお願いいたします。

    • ベストアンサー
    • PHP
  • htaccessの上書き方法について

    昨日の質問の続きなのですが、 (昨日の質問:http://okwave.jp/qa/q8026821.html) 上記の質問で解決方法はわかったのですが、 私がCGIの触り方がわからないので、 自分なりに別の方法を探しました。 しかしうまくいかなかったので、また質問させてください。 ■質問 htaccessで「index.html」なしに設定したところ、 CGIがエラーを返すようなったので、 TOPディレクトリのhtaccess設定はそのままで、 CGIを使うページをまとめたディレクトリには 新たにhtaccessでindex.htmlありに、上書きできないかと考えました。 しかし結果はエラーでした。 どうにかして、特定のディレクトリにのみ、別のhtaccessを使って トップディレクトリに設置したhtaccessの設定を上書きする方法はないでしょうか。 ちなみに失敗した結果は下記の記述になります。 ▼成功したが、CGIページでエラーが出た記述 # URLの正規化(index.html無し) Options FollowSymLinks RewriteEngine on RewriteCond %{THE_REQUEST} ^.*/index.html RewriteRule ^(.*)index.html$ http://scinex-fw.co.jp/$1 [R=301,L] ▼下層ページで上書きできなかった記述 # URLの正規化(index.html有り) RewriteEngine on RewriteRule ^$ /index.html [R=301]

    • ベストアンサー
    • CGI
  • 上書き保存の速度について・・・

    エクセル2003のファイル(1.5MB程度)を上書き保存すると 結構時間がかかってしまいます。(30~40秒程度) ・ファイル内のシート同士はリンクしています(8つのシートがリンク) ・外部ファイルとのリンクは1つだけ ・関数が入っているセルの数は200個程度 上記の内容で動作が遅くなっている原因は何でしょうか? また、解決策があればお願いします。 できれば上書き保存の時間を20秒以下にしたいのですが・・・

  • vistaでの上書き保存

    Windows vista で office 2007 を使用しています。ネットワーク上の2003server に保存したデータ(word や powerpointなど)をこのPCで開き、上書き保存ボタンをクリックして保存しているのですが、保存されない場合があります。もとのファイルはXp SP2のoffice2007で作成したファイルです。 常に保存されないわけではなく、時々なので「どの操作をした時」というのが明確ではないのですが、同様の症状を経験されたかたいらっしゃいますでしょうか。

  • コマンドプロンプトでエクセルを起動して上書き保存

    コマンドプロンプトを使って、以下を行いたいのですがどのように記述すればよいのか教えてほしいです。 端末のOSはWindows10です。 1)任意のエクセルを起動 2)上記エクセルを上書き保存(「ctrl」+「s」と同じ処理) 3)上記エクセルを閉じる 1~3の記述のうち、1のみは行えました。 2~3の記述方法が知りたいです。

  • 読み取り専用ファイルを上書き保存するには?

    作業中は常に読み取り専用状態にしておき、保存の時にだけ読み取り専用の属性を解除して 上書き保存し、上書き保存が終了次第、即座に読み取り専用状態に戻す運用を考えております。 (1)ThisWorkbookのOpenプロシージャでファイルを読み取り専用状態に設定 (2)ThisWorkbookのBeforeSaveプロシージャで    読み取り専用を解除→上書き保存→読み取り専用状態に再設定    Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)      '上書き保存モードを解除      Cancel = True      '上書きしますか?のコメントを非表示に設定      ActiveWorkbook.Saved = True      'ファイルが読み取り専用であった場合は以下の処理を実行      If ActiveWorkbook.ReadOnly Then        'ブックの読み取り専用設定を解除        ActiveWorkbook.ChangeFileAccess Mode:=xlReadWrite, Notify:=True        '上書き保存を実行        Application.DisplayAlerts = False        Application.EnableEvents = False        ActiveWorkbook.Save        Application.EnableEvents = True        Application.DisplayAlerts = True        'ブックを読み取り専用に設定        ActiveWorkbook.ChangeFileAccess Mode:=xlReadOnly      'ファイルが読み取り専用でなかった場合は以下の処理を実行      Else        '上書き保存を実行        Application.DisplayAlerts = False        Application.EnableEvents = False        ActiveWorkbook.Save        Application.EnableEvents = True        Application.DisplayAlerts = True      End If    End Sub 上記のマクロで上手くいきそうなのですが、下記2点が解決できずに困っております。 (1)上書き保存ボタンをクリックすると下記のメッセージが毎回表示されてしまいます。   『読み取り専用です。コピーを保存するには名前を付けて保存して下さい。』   OKボタンをクリックしたりEscやEnterキーを押下さえすればこの警告メッセージを回避でき   以後は思った通りの処理を行えるのですが、できればこのメッセージを表示したくない。 (2)上書き保存のために読み取り専用を解除した際、他のオペレーターがエクセル起動中、   または上書き保存中であった場合、エラーが発生してしまうことと思われます。   この問題の解決策をご存知の方、是非教えて下さいますよう宜しくお願いします。 当初は共有ブックとしての運用の方向で進めていたのですが、既に2人のオペレーターが ファイルにアクセスしている状態で、3人目のオペレーターがファイルを開くと読み取り専用と なってしまったり、保存時に時間がかかり過ぎたり、保存時のエラーが頻繁に発生したりといった 状況でしたので共有ブックとしての運用は諦めました。(シート50枚、ファイルサイズ3.5MB程度) 使用PCはXPでExcel2003です。以上、宜しくお願いします。

  • jQueryの.loadで読み込んだphpについて

    現状、以下のディレクトリ構造です。 /hoge/aaa/index.html(★) /hoge/bbb/index.html(★) /hoge/ccc/index.html(★) /hoge/test.php ★印のhtml内部でそれぞれ jQuery("#target").load("/hoge/date.php"); と書いてphpを読み込み、 出力結果をそれぞれのhtmlにある#target内表示させようとしています。 一方、test.php内部ではURLに /aaa/があったら、 /bbb/があったら、 /ccc/があったら、 「■■■■■」するという処理を書いて、応じた値を表示しようと考えています。 ここで問題が発生するのですが、 test.php内部で、 $pageurl = $_SERVER["REQUEST_URI"]; こう記述して値を取っても、phpが置かれている場所である 「/hoge/test.php」 を取得するだけで、htmlが置かれているパスは取得できませんでした。 .loadした場合のphpでは、 読み込み先のhtmlのURLなどをphp側で取得させる事はできないのでしょうか。 うまく説明できていないかもしれませんが、 ご助言いただけますとありがたいです。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • csvファイルを上書き保存でカンマ区切りされない

    csvファイルのセルに文字を入力して、「上書き保存」をすると ”XXXXX には、CSV(カンマ区切り)と互換性のない機能が含まれている可能性があります。この形式でブックを保存しますか? ” というメッセージが出たので「はい」をクリックして上書き保存しました。 再度そのファイルを開いてみると、カンマ区切りされておらず、各セル内の文字が結合されていました。 そこで質問なのですが、 試しに上記の上書き保存をせず、右上の「ウィンドウを閉じるボタン(×ボタン)」をクリックして、 「保存しますか?」との問いに「はい」と答え、 次に”XXXXX には、CSV(カンマ区切り)と互換性のない機能が含まれている可能性があります。この形式でブックを保存しますか? ” との問いに「はい」と答えた形で保存をすると、きちんとカンマ区切りされていました。 なぜ上記の方法では正常にカンマ区切りされなかったのでしょうか? どうぞよろしくお願いいたします。