PHP_PHP チュートリアルでリモート URL を呼び出す 6 つの方法のまとめ
サンプルコード 1: file_get_contents を使用して、取得モードでコンテンツを取得します
$url='http://www.baidu.com/ ';
$html= file_get_contents($url);
printhr($http_response_header);
コード例 2: fopen を使用して URL を開き、get メソッドを使用してコンテンツを取得します
コードは次のとおりです:
printhr();
fclose ($fp);
?>
サンプルコード 3: file_get_contents 関数を使用して投稿モードで URL を取得します
コードをコピーします
コードは次のとおりです:
$data=array(' foo'=>'bar'); $data=http_build_query($data); $opts=array( 'http' =>array( 'method'=>'POST',
"Content-Length: ".strlen($データ)."rn",
'content'=>$data
),
$context=stream_context_create($opts);
$html=file_get_contents('http://localhost/e/admin/test) .html',false,$context);
echo$html?>
サンプルコード 4: fsockopen 関数を使用して、ヘッダーと本文を含む完全なデータを取得します
コードをコピーします
コードは次のとおりです:
functionget_url($url,$cookie =false){
$url=parse_url($url);
if($cookie)$request.="Cookie: $cookie";
fwrite($fp,$request); (!@feof($fp)){
$result.=@fgets($fp,1024);
fclose($fp);
return$result;
// の HTML 部分を取得します。 URL、ヘッダーを削除
functionGetUrlHTML($url,$cookie=false){
$rowdata=get_url($url,$cookie )
if($rowdata)
{
$body=stristr($rowdata,"rnrn) ");
$body=substr($body,4,strlen($body));
return$body;
}
returnfalse;
}
?>
サンプルコード 5: fsockopen 関数を使用して開きますURL を取得し、POST モードでヘッダーと本文を含む完全なデータを取得します
コードをコピーします
コードは次のとおりです:
<
functionHTTP_Post($URL,$data,$cookie,$referrer? =""){
// 指定された URL を解析します
$URL_Info=parse_url($URL);
// リファラーを構築します
if($referrer==" ")// 指定されていない場合は、このスクリプトをリファラーとして使用します
// $data から文字列を作成
// POSTリクエスト:
$request.="POST ".$URL_Info["path"]." HTTP/ 1.1n";
$request.="ホスト: "; $URL_Info["host"]."n";
$request.="リファラー:$referern";
$request.="コンテンツ タイプ: application/x-www-form-urlencodedn"; "コンテンツの長さ: ".strlen($data_string)."n";
$request.="接続: 閉じる"
$request.="Cookie: $cookien"; $request.=$data_string."n";
$fp=fsockopen($URL_Info["host"],$URL_Info["port"]); ($fp)){
$result.=fgets($fp,1024);
fclose($fp);
printhr()>
; :curl ライブラリを使用します。curl ライブラリを使用する前に、php.ini をチェックして、curl 拡張機能がオンになっているかどうかを確認する必要がある場合があります
コードをコピーします
コードは次のとおりです。
$ch =curl_init();
curl_setopt ($ch, CURLOPT_URL, 'http://www.baidu.com/'); ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$file_contents =curl_close($ch);
curl ライブラリについて:
curl 公式 Web サイト http://curl.haxx.se/
curl は、FTP、FTPS、HTTP HTPPS SCP SFTP TFTP TELNET DICT FILE および LDAP をサポートする、URL 構文を使用したファイル転送ツールです。 curl は、SSL 証明書、HTTP POST、HTTP PUT、FTP アップロード、Kerberos、HTTP ベースのアップロード、プロキシ、Cookie、ユーザー + パスワードの証明、ファイル転送の回復、http プロキシ チャネル、その他多くの便利なトリックをサポートしています
functionprintarr(array$arr)
{
echo"
行フィールド数: ".count($arr)."
"; foreach($ aras$key=>$value)
{
echo"$key=$value
"
}
}
=========== === ========================================
多くのプログラミング愛好家が同じ疑問に遭遇するかもしれません。それは、他の人の Web サイトの HTML コードを検索エンジンのようにクロールし、そのコードを収集して自分にとって有用なデータにまとめる方法です。今日の簡単な例
Ⅰ. リモート Web ページのタイトルを取得する例:
以下はコード スニペットです:
+----- -------------------------------------- ------------ ----
+ Web ページのタイトルのコードを取得し、このコード スニペットを直接コピーし、.php ファイルとして保存して実行します。
+---- ------------------------ ---------------------------- ------------
*/
error_reporting(7) ;
$file = fopen ("http://www.jb51.net/", "r"); $file) {
echo "リモート ファイルを開けません。< ;/font>n";
}
while (!feof ($file)) {
$line = fgets ( $file, 1024);
if ("
$title = $out[1]; $title."";
break;
}
}
fclose($file);
?> リモート Web ページの HTML コードを取得する例:コード スニペット:
コードをコピーします
コードは次のとおりです:
/*
+----------------
+DNSingスパイダー
n";
$out .= "ホスト:www .dnsing.comrn";
$out .= "接続: 閉じる rnrn";
fputs($fp, $out);
while (!feof($fp)) {
echo fgets($fp, 128);
}
fclose($fp);
//終了
上記の 2 つのコード スニペットをコピーして実行し、効果を確認してください。上記の例は、Web ページ データをより適切に使用できるようにするための単なるプロトタイプです。したがって、すべてのプログラム愛好家にとって状況は異なります。ここで気をつけて勉強しましょう
==============================
もう少し。意味のある関数は次のとおりです。 get_content_by_socket()、Get_url()、get_content_url()、get_content_object は、いくつかのアイデアを提供するいくつかの関数です。
//すべてのコンテンツ URL を取得し、ファイルに保存します
function get_index($save_file, $prefix="index_"){
$count = 68
$i = 1; $save_file )) @unlink($save_file);
$fp = fopen($save_file, "a+") または die(". $save_file ." を開くことができませんでした"); $url = $i .".htm";
echo ". $url ."...";
echo "OKn"; ($ fp, $url_str);
++$i;
}
fclose($fp)
}
// ターゲットのマルチメディア オブジェクトを取得します
function get_object($url_file, $save_file, $split="|- -:* *:--|"){
if (!file_exists($url_file)) die($url_file ." 存在しません");
$file_arr = file($url_file);
if (!is_array($file_arr) ) || 空($file_arr)) die($url_file ." コンテンツではありません");
$url_arr = array_unique($file_arr); @unlink($save_file); fopen($ save_file, "a+") または die("保存ファイル ". $save_file ." を開くことができませんでした");
foreach($url_arr as $url){
if (empty($url))
echo " Get ". $url ."...";
$html_str = get_url($url);
echo $html_str;
echo $url;
exit;
$obj_str = get_content_object($html_str);
echo "OKn" ;
fwrite ($fp, $obj_str);
}
fclose($fp)
}
//ファイルの内容を取得する
function get_dir($save_file, $dir){
$dp = opendir ($dir);
if (file_exists($save_file)) @unlink($save_file);
$fp = fopen($save_file, "a+") または die("保存ファイル ". $save_file ." を開くことができませんでした") ;
while(($ file = readdir($dp)) != false){
if ($file!="." && $file!=".."){
echo "$file を読み取ります。 "...";
$file_content = file_get_contents($dir . $file);
$obj_str = get_content_object($file_content);
fwrite($fp, $obj_str); fclose($fp);
}
//指定された URL の内容を取得します
function get_url($url){
$reg = '/^http://[^/].+$/'; if (!preg_match($reg, $ url)) die($url ." 無効");
$fp = fopen($url, "r") または die("URL を開く: ". $url ." が失敗しました。 ");
while($fc = fread($fp, 8192)){
$content .= $fc;
}
fclose($fp);
if (empty($content)){
die("Get url: ". $url ." コンテンツが失敗しました。");
}
return $content;
}
//ソケットを使用して指定された Web ページを取得します
function get_content_by_socket($url, $host){
$fp = fsockopen($host, 80) または die("「. $url ." を開くことができませんでした」);
$header = "GET /".$url ." HTTP/1.1rn";
$header .= "Accept: * /*rn";
$header .= "Accept -Language: zh-cnrn";
$header .= "Accept-Encoding: gzip, deflatern";
$header .= "User-Agent: Mozilla/4.0 (互換性あり) ; MSIE 6.0; Windows NT SV1; InfoPath.1;
$header .= "ホスト: ".$host ."rn";
$header : キープアライブン";
//$header . = "Cookie: cnzz02=2; rtime=1148456424859; cnzz_eid=56601755-rnrn";
$header .= "接続: Closernrn";
fwrite( $fp, $header);
while (!feof ($fp)) {
$contents .= fgets($fp, 8192)
}
fclose($fp); //指定されたコンテンツの URL を取得します
function get_content_url( $host_url, $file_contents){
//$reg = '/^(#|javascript.*?|ftp://.+|http://. +|.*?href.*?|play.* ?|index.*?|.*?asp)+$/i'
//$reg = '/^(down.*?.html|d+) _d+.htm.*?)$/i';
$rex = "/([hH][rR][eE][Ff])s*=s*['"]*([^>'"s ]+)["'>]*s*/ i";
$reg = '/^(down.*?.html)$/i'; $result = ""; //array();
foreach($r as $c){
if (is_array($c)){
foreach($c as $d){
if (preg_match($reg, $d)){ $result .= $host_url . $ d."n" }
}
}
}
return $result;
// 指定された content
関数でマルチメディア ファイルを取得します。 str, $split="|--:**:- -|"){
$regx = "/hrefs*=s*['"]*([^>'"s]+)["'> ;]*s*(.*?< ;/b>)/i";
preg_match_all($regx, $str, $result);
if (count($result) == 3){
$result[2] = str_replace(" マルチメディア: ", "", $result[2]);
$result[2] = str_replace("", "", $result [2]);
$result[1] [0] .$result[2][0]
}
$result?> ============== =================================== ====
同じドメイン名が複数のIPに対応する場合、リモートWebページのコンテンツを取得するPHPの関数
fgcは単にそれを読み取り、すべての操作をカプセル化します
fopenもいくつかのカプセル化を実行しますが、読み込む必要がありますすべてのデータを取得するループ。
fsockopen これは直線のソケット操作です。
HTMLページを読むだけならfgcの方が良いです。
会社がファイアウォールを介してインターネットにアクセスする場合、一般的な file_get_content 関数は機能しません。もちろん、いくつかのソケット操作を通じて http リクエストをプロキシに直接書き込むこともできますが、それはより面倒です。
ファイルが小さいことが確認できたら、上記の 2 つのメソッド fopen,join('',file($file)); のいずれかを選択できます。たとえば、1k 未満のファイルのみを操作する場合は、file_get_contents を使用するのが最適です。
ファイルが大きいことが確実な場合、またはファイルのサイズを判断できない場合は、ファイル ストリーミングを使用するのが最善です。 1K ファイルを開くことと 1G ファイルを開くことの間に明らかな違いはありません。コンテンツが長ければ長いほど、スクリプトを読み終えるのではなく、読むのに時間がかかります。
------------------------------------------------ ----
http://www.phpcake.cn/archives/tag/fsockopen
PHP には、file_get_contents や fopen などの独自の関数を使用するなど、リモート Web コンテンツを取得するさまざまな方法があります。
echo file_get_contents("http://img.jb51.net/abc.php");
?>
ただし、DNSポーリングなどの負荷分散では、同じドメイン名が対応する場合があります。複数 1 つのサーバー、複数の IP。 img.jb51.net は、DNS によって 72.249.146.213、72.249.146.214、および 72.249.146.215 の 3 つの IP に解決されると仮定します。ユーザーが img.jb51.net にアクセスするたびに、システムは、対応する負荷分散アルゴリズム。
先週、ビデオ プロジェクトに取り組んでいたとき、このような要件に遭遇しました。このサーバーの送信ステータスをクエリするために、各サーバー上の PHP インターフェイス プログラム (abc.php とします) にアクセスする必要がありました。
現時点では、特定のサーバーに繰り返しアクセスし続ける可能性があるため、file_get_contents を使用して http://img.jb51.net/abc.php に直接アクセスすることはできません。
そして、これら 3 つのサーバー上で http://72.249.146.213/abc.php、http://72.249.146.214/abc.php、http://72.249.146.215/abc.php に順番にアクセスすると、これもWeb サーバーに複数の仮想ホストが搭載されている場合は使用できません。
ホストは同じドメイン名に対応する複数のIPを設定できないため、ローカルホストを設定することはできません。
これは、PHP と HTTP プロトコルを通じてのみ実現できます。abc.php にアクセスするときに、ヘッダーに img.jb51.net ドメイン名を追加します。そこで、次の PHP 関数を作成しました:
/*************************
* 機能使用法:同一ドメイン名が複数のIPに対応する場合、指定したサーバーのリモートWebページコンテンツを取得
* 作成時刻: 2008-12-09
* 作成者: Zhang Yan (img.jb51.net)
* パラメーターの説明:
* $ip サーバーの IP アドレス
* $host サーバーのホスト名
* $url URL アドレスサーバーの(ドメイン名を除く)
* 戻り値:
* リモート Web ページのコンテンツを取得しました
* false リモート Web ページへのアクセスに失敗しました
******************** ***********/
function HttpVisit($ip, $host, $url )
{
$errstr = '';
$fp = fsockopen ($ip, 80, $errstr, 90)
{
return false;
}
else
{
$out = "GET {$url} HTTP/1.1rn";
$out .= "ホスト:{$host}rn";
fputs ($fp, $out);
while($line = fread($fp, 4096)){
$response .= $line;
}
fclose( $fp )// ヘッダー情報を削除します
$pos = strpos($response, "rnrn");
$response = substr($response, $pos + 4);
return $response;
}
//メソッドの呼び出し:
$server_info1 = HttpVisit ("72.249.146.213", "img.jb51.net", "/abc.php");
$server_info2 = HttpVisit("72.249.146.214", "img.jb51.net", "/abc.php") ) ;
$server_info3 = HttpVisit("72.249.146.215", "img.jb51.net", "/abc.php");
http://www.bkjia.com/PHPjc/320696.html
www.bkjia.com
true

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

CakePHP はオープンソースの MVC フレームワークです。これにより、アプリケーションの開発、展開、保守がはるかに簡単になります。 CakePHP には、最も一般的なタスクの過負荷を軽減するためのライブラリが多数あります。

このチュートリアルでは、PHPを使用してXMLドキュメントを効率的に処理する方法を示しています。 XML(拡張可能なマークアップ言語)は、人間の読みやすさとマシン解析の両方に合わせて設計された多用途のテキストベースのマークアップ言語です。一般的にデータストレージに使用されます
