ホームページ > バックエンド開発 > PHPチュートリアル > PHP でリモート URL を呼び出す 6 つの方法

PHP でリモート URL を呼び出す 6 つの方法

WBOY
リリース: 2016-06-13 13:07:17
オリジナル
791 人が閲覧しました

php
でリモートURLを呼び出す6つの方法

サンプルコード 1: file_get_contents を使用して取得モードでコンテンツを取得します
???
$url='http://www.baidu.com/';

$html = file_get_contents($url);
?? //print_r($http_response_header);
??ec($html);
??printhr();

??printarr($http_response_header);

printhr();
?? ?>
?
??? サンプルコード 2: fopen を使用して URL を開き、get メソッド
を使用してコンテンツを取得します。 ??

?? $fp = fopen($url, 'r');
? ?
?? printarr(stream_get_meta_da

ta($fp));

printhr();
?? while(!feof($fp)) {
?????? $result .= fgets($fp, 1024);
}
echo "url body:??? $result";
??printhr();

?? fclose($fp);
?? ?>

サンプルコード 3: file_get_contents 関数を使用して、ポストモードで URL

を取得します ?? ?? $data = 配列 ('foo' => 'bar');
?? $data = http_build_query($data);

?? $opts = 配列 (
'http' => 配列 (
?? 'メソッド' => 'POST',
??? 'header'=> "コンテンツ タイプ: application/x-www-form-urlencodedrn" .
???? "コンテンツの長さ: " .strlen($data) .
?? 'コンテンツ' => ?? )、
?? );

$context = stream_context_create($opts);
$html = file_get_contents('http://localhost/e/admin/test.html', false, $context);

echo $html;
?>

サンプルコード 4: fsockopen 関数を使用して URL を開き、ヘッダーとボディを含む完全なデータを get モードで取得します
function get_url ($url,$cookie=false) {
$url = parse_url($url);
$query = $url[パス]."?".$url[クエリ];
ec("クエリ:".$query);
$fp = fsockopen( $url[ホスト], $url[ポート]?$url[ポート]:80 , $errno, $errstr, 30);
if (!$fp) {
?????? false を返します;
} else {
?????? $request = "GET $クエリ HTTP/1.1rn";
?????? $request .= "ホスト: $url[host]rn";
?????? $request .= "接続: 閉じる";
?????? if($cookie) $request.="Cookie:?? $cookien";
?????? $request.="rn";
?????? fwrite($fp,$request);
??????while(!@feof($fp)) {
???????$result .= @fgets($fp, 1024);
??????}
?????? fclose($fp);
?????? $result を返します;
}
}


// URL の HTML 部分を取得し、ヘッダーを削除します
function GetUrlHTML($url,$cookie=false) {

??? $rowdata = get_url($url,$cookie);
??? if($rowdata)
???{
??????? $body= stristr($rowdata,"rnrn");
??????? $body=substr($body,4,strlen($body));
??????? $body を返します;
???}
? ?
??? false を返します;

}


?>

サンプルコード 5: fsockopen 関数を使用して URL を開き、ヘッダーと本文を含む完全なデータを POST モードで取得します
function HTTP_Post($URL,$data,$cookie, $referrer="") {

// 指定された URL を解析します
$URL_Info=parse_url($URL);

// リファラーを構築
if($referrer=="") // 指定されていない場合は、このスクリプトをリファラーとして使用します
$referrer="111";

// $data
から文字列を作成します foreach($data as $key=>$value)
$values[]="$key=".urlencode($value);
$data_string=implode("&",$values);

// どのポートが必要かを調べます - 指定されていない場合は、標準 (=80) を使用します
if(!isset($URL_Info["port"]))
$URL_Info["ポート"]=80;

// POST リクエストを構築します:
$request.="POST ".$URL_Info["path"]." HTTP/1.1n";
$request.="ホスト: ".$URL_Info["host"]."n";
$request.="リファラー: $referern";
$request.="コンテンツ タイプ: application/x-www-form-urlencodedn";
$request.="コンテンツの長さ: ".strlen($data_string)."n";
$request.="接続: 閉じる";

$request.="Cookie:?? $cookien";

$request.="n";
$request.=$data_string."n";

$fp = fsockopen($URL_Info["host"],$URL_Info["port"]);
fputs($fp, $request);
while(!feof($fp)) {
?????? $result .= fgets($fp, 1024);
}
fclose($fp);

$result を返す;
}
printhr();
?>
サンプル コード 6:curl ライブラリを使用します。curl ライブラリを使用する前に、php.ini をチェックして、curl 拡張機能がオンになっているかどうかを確認する必要がある場合があります

$ch =curl_init();
$timeout = 5;
curl_setopt ($ch, CURLOPT_URL, 'http://www.baidu.com/');
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$file_contents =curl_exec($ch);
curl_close($ch);

echo $file_contents;
?>
CURL ライブラリについて:
カール公式サイト http://curl.haxx.se/
カール URL構文を使用したファイル転送ツールで、FTP、FTPS、HTTP HTTPS SCP SFTP TFTP TELNET DICTをサポートしています。 ファイルとLDAP。 curl は SSL 証明書、HTTP POST、HTTP PUT、FTP をサポートします アップロード、ケルベロス、HTTP ベースのアップロード、プロキシ、Cookie、ユーザー + パスワードの証明、ファイル転送の回復、http プロキシ チャネル、その他の便利なテクニックが多数あります

関数 printarr(array $arr)
{
??? echo "
行フィールド数: ".count($arr)."
";
??? foreach($arr as $key=>$value)
???{
????? ?
?????????? エコー "$key=$value???
";
???}
}
?>

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート