Loading
BLOG 開発者ブログ

2023年12月29日

【PHP初学者向け】PHPでwebページを表示してみよう

この記事ではPHPの開発環境構築を行い、file_get_contents関数を使用して指定されたURLからHTMLコンテンツを取得し、ブラウザで表示するまでの流れを解説いたします。

目次

1.はじめに

記事を読んでくださっている画面の前の皆様、おはようございます、こんにちは、こんばんは。クラウドソリューション第一グループの nagai.s です。

この記事は アイソルート Advent Calendar 2023 17日目の記事です。

今回はPHP初学者向けに、開発環境の構築から簡単なコードで実際に動かしてみるところまで解説していこうと思います。私も最近PHPの学習を始めたばかりの初学者なのですが、この記事が私のような初学者の方々の何か助けになれば幸いです。これから共にPHPの習得を目指して頑張りましょう!

2.環境構築

以下の手順を踏んで、環境構築を行います。(OSはWindowsを想定しています。)

2-1.XAMPPをインストール

まずは、XAMPPをダウンロードページからダウンロードします。ダウンロードページにアクセスすると、「Windows向けXAMPP」というボタンがあります。クリックするとXAMPPのダウンロードが始まります。
ダウンロードが完了したら、ダウンロードファイルを実行します。XAMPPがデバイスに変更を加えることを許可するかの確認画面が表示されますので、「はい」をクリックします。
その後は画面に従って「OK」や「Next」をクリックしていくと、XAMPPのインストールが始まります。「Completing the XAMPP Setup Wizard」という画面が表示されればインストール完了です。

2-2.XAMPPでサーバ起動

インストールしたXAMPPを起動して必要なサーバーを起動します。PHPでのWeb開発には、WebサーバとDBサーバの2つが必要となります。
WebサーバであるApache、DBサーバであるMySQLそれぞれのActionsの中にある「Start」をクリックし、起動します。
StartをクリックしたModule名の背景が緑色になれば正常に起動していることになります。

2-3.ブラウザでXAMPPの動作確認

ブラウザを開いて、「http://localhost:8080」にアクセスします。XAMPPが正常に動作している場合、「Welcome to XAMPP」という画面が表示されます。

2-4.PHPファイルの配置

まずはPHPファイルを作成します。
ファイル名やファイルの中身は任意ですが、ここではファイル名を「sake.php」ファイルの中身を「日本酒」とします。日本酒は美味しいですからね。
お酒の話はさておき、PHPファイル作成後はドキュメントルートに保存します。ドキュメントルートとは、Web上に公開するファイルを置くために設定されたディレクトリのことです。
XAMPPのドキュメントルートは「xampp」というフォルダの中の「htdocs」というフォルダになります。基本的には、WindowsでXAMPPをインストールすると、Cドライブの中に「xampp」というフォルダができているはずなので、「PC/Windows(C:)/xampp/htdocs」の下に公開するファイルを置くことでブラウザから確認できるようになります。

2-5.ブラウザでPHPプログラムの動作確認

ドキュメントルートにPHPファイルの保存が完了したらブラウザを起動し、「http://localhost:8080/sake.php」にアクセスしてみます。アクセスすると手順4で「sake.php」に入力した「日本酒」という文字が表示されるはずです。
このようにドキュメントルートに設置したPHPファイルをブラウザで表示させることができます。

3.コード解説

任意のwebページを表示するコードは以下になります。コードを書きこむファイルは、ファイル動作確認で使用したファイルを使いまわしても、新たに作成してもどちらでも構いません。

<?php
$url = 'https://www.google.co.jp/';

$options = array(
    'http' => array('ignore_errors' => true)
);

$context = stream_context_create($options);

$html = @file_get_contents($url, false, $context);
    foreach(array('UTF-8','SJIS','EUC-JP','ASCII','JIS') as $charcode){
        if(strcmp(mb_convert_encoding($html, $charcode, $charcode),$html)==0){
            $from_encoding = $charcode;
            break;
        }
    }

$result = mb_convert_encoding($html, "utf8", $from_encoding);

echo $result;
  • $url変数: リクエストを送信するURLを指定しています。この例ではGoogleの日本語版ウェブページへのURLになっています。
  • $options変数: stream_context_create関数で使用されるHTTPコンテキストオプションの配列です。'ignore_errors' => trueが指定されています。これにより、file_get_contents関数がエラー応答を無視し、コンテンツを取得します。
  • $context変数: stream_context_create関数を使用してHTTPコンテキストを作成します。これには前述のオプションが含まれています。
  • $html変数: file_get_contents関数を使用して指定されたURLからHTMLコンテンツを取得します。@記号を付けているため、エラーが発生した場合でもエラーメッセージを表示せずに処理が続行されます。
  • foreachループ: HTMLコンテンツがどの文字エンコーディングで表現されているかを判定するためのループです。mb_convert_encoding関数を使用して各エンコーディングで変換し、元のHTMLと一致するかを調べています。一致した場合、そのエンコーディングが使用されます。※mb_convert_encoding($html, $char_to, $char_from)$char_fromにはautoが設定できるのですが、判別がうまく出来る場合とできない場合があるため、明示的に文字コードを指定してループさせています。
  • $result変数: 最終的に適切な文字エンコーディング(UTF-8)に変換されたHTMLコンテンツを格納します。
  • echo $result;: 変換されたHTMLコンテンツを表示します。

実行すると以下のようにWebページが表示されます。

4.おわりに

この記事を最後まで読んでくださりありがとうございました。

nagaisのブログ