アプリ版:「スタンプのみでお礼する」機能のリリースについて

PHPのことに関しては初心者なので、質問させてください。

WEBページをローカルに保存する時は、IEなら通常[ファイル]-[名前を付けて保存]として
HTML形式やMHT形式などを選んで保存できると思います。
この保存の動作をPHPによって行うことは可能でしょうか?
もし可能であれば、そのソースコードもしくはソースコードが公開されているページを教えて頂けませんでしょうか?

A 回答 (4件)

>あまり意味が分かりませんが


わけわからん、コメントしてすみません。
1)サーバーで動作させてサーバーに保存する
2)サーバーで動作させてクライアントに保存する
3)サーバーではなく、ローカルで動作させて、ローカルに保存する
っていうパターンを考えていました。
2以外はできると思うという意味でした。
>A.phpにアクセスしたときにまったく別の外部のWEBページ「B.html」を、「A」サーバの中に保存したいのです。
#3の方がちゃんと説明されてますね。
    • good
    • 0

要するに、あなたのサーバー上にそのニュースサイトのキャッシュを作成したい、という解釈でよろしいでしょうか?


HTMLファイル単独で保存したいのであれば比較的簡単にできますが、画像やFlashなどを込みでとなると少々面倒ですし、ましてやMHTファイル形式でとなるとかなり面倒です。(MHTの仕組みが分かれば不可能ではないですが)

HTMLだけであれば、以下のようにすれば出来ると思います。
(ただしphp.iniのallow_url_fopenが有効であることが前提)

$read_fp=@fopen($url,"r");
$write_fp=@fopen($file_path,"w");
while($line=@fgets($read_fp,1024)){
fputs($write_fp,$line);
}
fclose($read_fp);
fclose($write_fp);

画像などのファイルも込みで保存したいとなると、HTMLファイルをパースして<img>タグなどを解析する必要が生じて少々処理が面倒になりますので、wgetにでも処理を丸投げした方が手っ取り早いと思います。
(もっとも、これもsafe_modeが無効であることに加え、変数のサニタイズをしっかりやらないといけませんが)

exec("/path/to/wget -r -L -l 1 -p ".$save_path." ".$url);

なお、余計なお節介かも知れませんが、キャッシュしたページを他人に再公開する場合は、著作権上の配慮にご注意下さい。
    • good
    • 0

PHPでは、URIもファイルの様に扱えるので、


以下のように読込(サンプルでは、printしてますけどファイルに書き出しできるので、名前をつけて保存できることになる)して保存することができます。
ローカルに保存というのが、サーバー上でスクリプトを動かすのでなくて、
ローカルでコンソール起動するという意味だったらローカルに保存できます。
<?php
$file="http://www.sample.ne.jp/index.html";
$fp=@fopen($file,"r");
while($line=fgets($fp)){
print "$line";
}
fclose($fp);
?>

この回答への補足

>ローカルに保存というのが、サーバー上でスクリプトを動かすのでなくて、
>ローカルでコンソール起動するという意味だったらローカルに保存できます。

すみません。あまり意味が分かりませんが、とりあえずやってみます。

補足日時:2006/01/23 00:34
    • good
    • 0

できません



PHPはwebに特化した言語です
そのようにパソコンで自由自在につかえるよな言語ではありません

PHPはサーバー内だけで完結してしまい
結果としてHTMLなどのブラウザが認識できるものを出力させるだけにすぎません
ですから、PHPを使ったサイトのページを保存させてもPHPソースはどこにも書かれていません、出力されるのは単なるHTMLなどです

この回答への補足

>PHPはサーバー内だけで完結してしまい

すみません、説明不足でした。
例えば下記のような方法だったらどうでしょうか。
これだとサーバ内で完結していると思うのですが…。
---------------------------------------------------------------------------------------------
「A」というサーバ内にA.phpというファイルを置きます。
で、A.phpにアクセスしたときにまったく別の外部のWEBページ「B.html」を、「A」サーバの中に保存したいのです。
ここでいう「B.html」は、ユーザーが指定するWEBページを、保存したものになります。
現時点ではニュースサイトの記事ページを対象に保存しようと考えているので、B.htmlはそれになります。
---------------------------------------------------------------------------------------------

補足日時:2006/01/23 00:02
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!