(1) ファイルにアクセスして他の Web サイトにアクセスする:
Web サイトの URL アドレスは実際には Web ページ ファイルのパスなので、ファイルを開くことで Web ページのファイルを開くことができます。
その後、その内容を独自のファイルに書き込むことができます。このようにして、複数の Web サイトから興味のあるコンテンツを検索し、それを自分のドキュメントに保存できます。
たとえば、次のメソッドを実装できます:
$url_list = file("http://www.baidu.com/");$demo_web = fopen("demo_web.php",'a');foreach($url_list as $one_list){ fwrite($demo_web,$one_list);}fclose($url_list);
(2) URL の PHP 解析:
URL の基本コンポーネント: プロトコル名 (スキーム)、ホスト名 (ホスト)、ポート番号 ( port)、ファイルパス (path)、クエリパラメータ (クエリ)
php は、parse_url() 関数を使用して URL を解析し、解析する必要がある URL をパラメータとしてこの関数に渡すことができます。この関数は、 URLを配列に変換します。
配列内の各キー値の名前と対応する意味は、上でリストした「基本的な要素」です。
例: $demo = parse_url("http://www.example.com/index.php");
$demo['host'] は "www.example.com" $demo['path' 】index.phpです
(3) PHPソケットプログラミング:
ソケット操作の基本的な仕組み:
サーバーとクライアントで通信するためのソケットを構築します。
サーバー側: サーバーは最初にソケットを初期化し、次にポートをバインドし、次にポートを監視し、最後に accept を呼び出してサーバー側のソケットをブロックし、クライアントのソケット接続を待ちます。
クライアント: まずソケットを初期化し、次にブロックされたサーバー側のソケットに接続します。接続が成功すると、クライアントとサーバー間の接続が確立されます。
クライアントがデータリクエストを送信し、サーバーがリクエストを受信して処理し、その後、応答データをクライアントに送信し、クライアントがデータを読み取り、最後に接続を閉じます。このようにして、インタラクションは終了します。
PHP でソケットを開きたい場合は、fsockopen() 関数を使用する必要があります。
fsockopen() 関数のパラメータは、URL、ポート番号、エラー番号を格納する変数、エラーメッセージ文字列を格納する変数、タイムアウト待ち時間です。 (最初のパラメータのみが必要です)。
この fsockopen() 関数は fopen() 関数と同様に、取得するのはファイルポインタなので、 fwrite() などの関数を使ってファイルを操作することもできます
fsockopen() を使用して接続を確立した後、 fwrite( ) 関数を使用すると、次のようなデータがサーバーに書き込まれます。
$fp = fsockopen("www.example.com",80,$errno,$errstr,30);if(!$fp){ echo "连接失败";}else{ $send = "HEAD /HTTP/1.1\r\n"; $send .= "HOST: www.example.com\r\n"; $send .= "CONNECTION: Close\r\n\r\n"; fwrite($fp,$send); $data = fgets($fp,128); //检索HTTP头的128个字符串 fclose($fp); //关闭socket //用explode函数将$data从空格处打散为两个字符串,再由list函数将前一个字符串赋值给$response变量,将后面的字符串赋值给$code字符串。 list($response,$code)= explode(' ',$data);}
上記のコードについて:
1. $fp に書き込まれる $send 文字列は、実際には「一連の HTTP プロトコル ヘッダーを使用して通信を開始します」 process"、たとえば、「HEAD/HTTP/1.1rn」です。HEAD はリクエスト タイプです。もちろん、GET または POST を使用してリクエストすることもできます。次の rn は形式を満たすためのものです。 (同様に、以下の $send に追加された 2 つの文字列も HTTP プロトコル ヘッダーです)
2. fwrite を通じて HTTP ヘッダーを送信した後、$fp は独自の HTTP ヘッダーを返し、それを fgets() 関数を通じて読み取ります。 $data のスペースの後の文字列が $code に割り当てられます。
そして、この $code は HTTP ステータス コードです。ステータス コードが 200 の場合のみ、URL が利用可能であることを意味します。それ以外の値のステータス コードは問題があることを意味します。
(4) cURL の使用:
cURL の機能は、単に手動でページを閲覧する代わりに、cURL を使用して http リクエスト機能を改良することができます。
php は、shell_exec() やその他の関数を通じて cURL を呼び出すことができ、cURL クラス ライブラリ: libcurl もあります。 操作手順は次のとおりです:
1. アクセスする URL をパラメータとして指定して、curl_init() を呼び出します。 cURL トランザクションを開始するには
$cur = curl_init('www.example.com');
この関数は cURL トランザクションのポインタを返します。次のステップは、このトランザクションのポインタを操作することです。
2. 次に、トランザクションのオプションを設定するために、curl_setopt() 関数を複数回呼び出す必要があります (設定できるオプションが多すぎるため、ここでは 1 つずつ説明しません)。
curl_setopt($curl,"可设置的选项",value);
3. セットアップが完了しました。すべてのオプションを実行した後、curl_exec() 関数を使用してトランザクションを実行し、返されたデータを変数に割り当てます:
$result = curl_exec($curl);
4. 最後に、リンクを閉じます。
curl_close($curl);
一般的に使用される設定オプションをいくつか示します:
1. エラーが発生した場合に cURL に実行を停止するように指示します:
curl_setopt($curl,CURLOPT_FAILONERROR,1);
2. タイムアウトを設定します:
curl_setopt($curl,CURLOAPT_TIMEOUT,5);
3.使うデータを送信するための POST メソッド:
curl_setopt($curl,CURLOAPT_POST,1);
4. POST によって送信されるデータを設定します:
curl_setopt($curl,CURLOAPT_POSTFIELDS,'name=小明&age=12');
(ヒント: cURL ツールは、Cookie の送受信、ファイルのアップロードの処理、SSL 接続による作業、および FTP の処理も行うことができます)ファイル)