ホームページ  >  記事  >  バックエンド開発  >  PHP でリモート画像を取得するには、CURL メソッドとソケットメソッドの 2 つの方法があります。リモート画像を取得する_PHP チュートリアル

PHP でリモート画像を取得するには、CURL メソッドとソケットメソッドの 2 つの方法があります。リモート画像を取得する_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-21 15:22:48814ブラウズ

方法 1: ソケット

コードをコピーします コードは次のとおりです:

$a = "http://jb51.net/content/uploadfile/201106/thum-f3ccdd27d2000e3f9255a7e3e2c4880020110622 09524 3.jpg";
$ local = 'socket1.gif';
$aa = getImg($a,$local);
/*
*@ 保存するファイル名
*/
function getImg( $url = "" , $filename = "" ) {
if(is_dir(basename($filename))) {
echo "Dir が存在しませんでした";
Return false
}
//URL 接続上の引用符を削除します
$url = preg_replace( ' /(?:^['"]+|['"/]+$)/', '', $url );
if (!extension_loaded('sockets')) return false; URL 関連情報の取得 情報
preg_match( '/http://([^/:]+(:d{1,5})?)(.*)/i', $url, $matches ); !$matches) false を返します
$sock =socket_create( AF_INET, SOCK_STREAM, SOL_TCP ); !@socket_connect( $sock, $matches[1], $matches[2] ? substr($matches[2], 1 ) : 80 ) ) {
return false;
}
//画像の相対アドレス
$msg = 'GET ' . " HTTP/1.1rn"; msg .= 'ホスト: ' . "rn";
$msg .= '接続:
$bin = '';
while ( $tmp =ソケット_read( $sock, 10 ) ) {
$bin .= $tmp;
$tmp = '';
$bin =explode("rnrn", $bin); $bin[1];
$h = fopen( $filename, 'wb' );
$res = fwrite( $h, $img ) === false : true; Return $res;
}


方法 2:curl



コードをコピーします

コードは次のとおりです:


$url = "http://jb51.net/content/ Uploadfile/201106/thum-f3ccdd27d2000e3f9255a7e 3e2c4880020110622095243.jpg" ;
$filename = 'curl.gif';
//http://jb51.net
getImg($url, $filename); /* *@入手指定した画像をcurl経由でローカルに送信 *@ 完全な画像アドレス *@ 保存するファイル名
*/
function getImg($url = "", $filename = "") {
if(is_dir(basename($filename) ))) {
echo "Dir が終了しませんでした";
Return false;
//URL 接続上の引用符を削除します
$url = preg_replace( '/(?:^['"]+|[' "/]+$)/', ' ', $url );
$hander =curl_init();
$fp = fopen($filename,'wb');
curl_setopt($hander,CURLOPT_URL,$url);
curl_setopt($hander,CURLOPT_FILE,$fp ; 直接表示されます
curl_setopt($hander,CURLOPT_TIMEOUT,60);
/*$options = array(
CURLOPT_URL=> 'http://jb51.net/content/ Uploadfile/201106/thum-f3ccdd27d2000e3f9255a7e3e2c488002011 0622095243.jpg'、
CURLOPT_FILE => $fp、
CURLOPT_HEADER => 0、
CURLOPT_FOLLOWLOCATION =& gt; 1,
CURLOPT_TIMEOUT => 60
);オプション);
curl_exec($hander);
true を返す

;



http://www.bkjia.com/PHPjc/324605.html

www.bkjia.com

tru​​e

http://www.bkjia.com/PHPjc/324605.html

技術記事

方法 1: ソケットのコピー コードは次のとおりです: $a = "http://jb51.net/content/uploadfile/201106/thum-f3ccdd27d2000e3f9255a7e3e2c4880020110622095243.jpg"; $local = 'socket1.gif'; .





声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。