プロが教える店舗&オフィスのセキュリティ対策術

いまPHPをやっているのですが。外部サイトのソースを文字列で取得する方法はあるのでしょうか?
(例えばwikipediaの内容を文字列で取得して echo で表示させたい)
wikipediaの内容はソースを見れればいいだろうと思ったからです。
fopenでURLを入れれると書いていたのでしてみたのですがタイムアウトしてうまくいきません。
なので例としてwikipediaのページのソースを取得しechoで表示させるプログラムを教えていただけませんでしょうか?。よろしくお願いします。

A 回答 (7件)

これでProxy経由でのアクセスが出来るようになるかと思います。


(私の所では使えるProxyが無いのでテストはしてません)

<?php
$proxy = array(
"http" => array(
"proxy" => "tcp://プロキシHOST:ポート",
"request_fulluri" => true
)
);
$proxy_context = stream_context_create($proxy);
echo file_get_contents("アクセス先のURL", false, $proxy_context);
?>
    • good
    • 0
この回答へのお礼

回答本当にありがとうございます。
今度は
array( "proxy" => "tcp://proxy.noc.*****-****.ac.jp:****", "request_fulluri" => true ) ); $proxy_context = stream_context_create($proxy); echo file_get_contents("http://goyaku.seesaa.net/article/115299516.html", false, $proxy_context); ?>
と表示されました。
*のところは自分のproxyのアドレスとポートを入力しました。「?>」が出力されているところから見ると"http"=> 以降からそのまま表示されている感じです。
あの、もしお疲れでしたら、言ってくださって結構ですが・・・

お礼日時:2009/03/13 07:57

その表示のされ方はエラーが発生している感じではないので、括弧とかダブルコーテーションの入力ミス等ではないでしょうか。



Proxyのある環境でテストしてみたところ、ちゃんと表示されましたよ。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
arrayのところとかコンマとか色々いじくってみたのですがどうも結果が変わりません、プログラム送ります。
<?php
$proxy = array(
"http" => array(
"proxy" => "tcp://proxy.noc.*****-****.ac.jp:****",
"request_fulluri" => true
)
);
$proxy_context = stream_context_create($proxy);
echo file_get_contents("http://ja.wikipedia.org/wiki/%E8%B6%85%E9%95%B7% … false, $proxy_context);
?>
どこか間違っているでしょうか?
ちなみにプロキシHOSTとは「ツール」→「インターネットオプション」→「接続」→「LANの設定」→「プロキシーサーバのアドレス(E)」の内容でいいんですよね?

お礼日時:2009/03/13 15:57

DNS、プロキシー、ファイヤウォール等の影響かもしれませんね。


ネットワーク環境を一度確認してみてはいかがでしょうか。

私の所ではデータが取得できました。
環境は Windows Vista + XAMPP 1.7.0 です。
    • good
    • 0
この回答へのお礼

回答本当にありがとうございます。
今は寮で学校のプロキシーなのできっとプロキシーが原因だと思います。
プロキシーを無視する方法なんてありますでしょうか?

お礼日時:2009/03/13 05:31

echo file_get_contents("ja.wikipe...



の ja. の前に http:// を入れてみて下さい。

根本的な問題として、ただ http://ja.wikipedia.org/ にアクセスしてもリダイレクトの指示が帰ってくるだけで、そのページにはコンテンツがありませんので、ちゃんとコンテンツのあるページを読み込んで実験してみて下さい。
    • good
    • 1
この回答へのお礼

回答本当にありがとうございます。
ですが、なぜかエラーになります。
自分が入力したプログラムは
<?php
echo file_get_contents("http://ja.wikipedia.org/wiki/%E3%82%B3%E3%83%B3% … ");
?>
で、回答が
Warning: file_get_contents(http://ja.wikipedia.org/wiki/%E3%82%B3%E3%83%B3% … ) [function.file-get-contents]: failed to open stream: 接続済みの呼び出し先が一定の時間を過ぎても正しく応答しなかったため、接続できませんでした。または接続済みのホストが応答しなかったため、確立された接続は失敗しました。 in C:\xampp\htdocs\tesuto.php on line 2
でした。コンテンツなどもブログ、Youtube、Googleなど色々やってみたんですが、全部同じ結果でした。

お礼日時:2009/03/12 20:39

あくまでfopenとecho使って「ソース」表示なら



<?php
$url = 'http://ja.wikipedia.org/';
$fp = fopen($url, 'r');
if($fp==false)exit;
while (!feof($fp)) {
echo htmlspecialchars(fgets($fp,8192));
}
fclose($fp);
?>

エラー処理は適当に。

勉強するならfsockopenでhttpヘッダ送信受信からやったほうがいいですよ。
http://www.spencernetwork.org/memo/tips-3.php
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
そのプログラムを実行してみたのですが(URLを正しく書き直して)真っ白のままでした。
それと、内容を保存するときに

このファイルは、ANSIテキストファイルとして保存すると失われてしまうUnicode 形式の文字を含んでいます・・・[文字コード]から[Unicode]を選択してください。

などとかかれるのですが、何か根本的なミスをしているのでしょうか?

お礼日時:2009/03/12 14:48

リンクと間違われて途中で切れて見えなくなってしまいましたね(^^;


以下のような感じで、URLに http:// を付けてみてください。
==============================
<?php
echo file_get_contents("ja.wikipedia.org/wiki/%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8");
?>
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
そのプログラムで実行してみたのですがうまくいかずに

Warning: file_get_contents(ja.wikipedia.org/wiki/%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8) [function.file-get-contents]: failed to open stream: No such file or directory in C:\xampp\htdocs\test.php on line 2

と表示されてしまいます。
何かわかりますでしょうか?

お礼日時:2009/03/12 14:38

これで出ると思います。

(画像やCSSなど相対パスで指定されている物は出ませんが)
==============================
<?php
echo file_get_contents("http://ja.wikipedia.org/wiki/%E3%83%A1%E3%82%A4% …
?>
    • good
    • 0

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