質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
HTTPS

HTTPS(Hypertext Transfer Protocol Secure)はHypertext Transfer プロトコルとSSL/TLS プロトコルを組み合わせたものです。WebサーバとWebブラウザの間の通信を暗号化させて、通信経路上での盗聴や第三者によるなりすましを防止します。

IIS

IIS(Internet Information Services)はマイクロソフト社によって開発されたwebサーバーです。Windows上で動作します。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

8984閲覧

file_get_contentsでhttpsサイトのソース取得が出来ない

gasu

総合スコア7

HTTPS

HTTPS(Hypertext Transfer Protocol Secure)はHypertext Transfer プロトコルとSSL/TLS プロトコルを組み合わせたものです。WebサーバとWebブラウザの間の通信を暗号化させて、通信経路上での盗聴や第三者によるなりすましを防止します。

IIS

IIS(Internet Information Services)はマイクロソフト社によって開発されたwebサーバーです。Windows上で動作します。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2016/08/14 05:09

###前提・実現したいこと
PHPでHTMLソースコードの取得を行いたいです。

###発生している問題・エラーメッセージ
file_get_contentsでHTTPのサイトだと取得できますが、HTTPSのサイトだと取得ができません。
http://www.yahoo.co.jp/は取得できるが、https://www.google.co.jpは取得できない。)

###該当のソースコード
//取得したいURLを指定
$html = file_get_contents("https://www.google.co.jp");

//取得したHTMLを表示出来るように変換 $html = htmlspecialchars($html); $html = mb_convert_encoding($html,"SJIS", "auto"); //改行コードを変換 $html = str_replace("\n", "<br/>", $html); //取得したコードを表示 echo ($html);

###試したこと
下記サイトを参考にして
php.iniへの

allow_url_fopen = On
extension=php_openssl.dll

追加を試してみましたがうまくいきません。

http://helog.jp/xampp/file_get_contents-https/

###補足情報(言語/FW/ツール等のバージョンなど)
WebサーバーはISS 7.0 を使用しています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

mb_convert_encoding
サポートされる文字エンコーディング

"auto" が指定された場合、この文字列は 言語設定 (NLS) ごとに定義されたエンコーディングのリストに変換されます。たとえば、言語設定が Japanese の場合は "ASCII,JIS,UTF-8,EUC-JP,SJIS" です。

-> 変換前の文字列を自動判定得るためのものではありません。

php

1<?php 2//取得したいURLを指定 3$html = file_get_contents("https://www.google.co.jp"); 4 5//取得したHTMLを表示出来るように変換 6$html = mb_convert_encoding($html, 'SJIS-WIN', 'UTF-8'); 7 8//改行コードを変換 9$html = nl2br($html); 10?> 11<!DOCTYPE HTML> 12<html lang="ja"> 13 <head> 14 <meta charset="Shift-JIS"> 15 <title></title> 16 </head> 17 <body> 18 <div> 19 <pre> 20 <?= htmlspecialchars($html, ENT_QUOTES, 'SJIS-WIN'); ?> 21 </pre> 22 </div> 23 </body> 24</html> 25

投稿2016/08/14 05:23

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

gasu

2016/08/14 06:30

早速の回答ありがとうございます。回答頂いたコードで表示は出来るようになりましたが、意図した表示になりません。(日本語部分のHTMLソースが日本語で表示されない) 文字コードとPHP文法についてもう少し学習してみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問