search
Home类库下载PHP类库How to use socket to get remote pictures in php

Steps:

1, match the host name and file part in the URL

2, create socket and connect to the target server

3, construct HTTP request and send

4, read HTTP response and parse

5, save Content to file and close the socket connection


The code is implemented as follows:

<?php
/*
 * 使用socket获取远程资源(网页,图片等)
 * url 资源URL
 * savepath 资源的保存路径
 * return true/false
 */
function get_remote_picture($url,$savepath="./"){
    set_time_limit(0);
    $pattern = &#39;/(http:\/\/)?([^\/]+)(.+)/&#39;;
    $res = preg_match($pattern, $url, $matches);
    if($res == 0){
        return false;
    }
    $host = "";//主机名
    $file = "";//请求的文件
    if(count($matches) == 3){
        $host = $matches[1];
        $file = $matches[2];
    }else if(count($matches) == 4){
        $host = $matches[2];
        $file = $matches[3];
    }else{
        return false;
    }
    $socket = socket_create(AF_INET,SOCK_STREAM,SOL_TCP);
    $res = socket_connect($socket,gethostbyname($host),80);
    if(!$res){
        //echo socket_strerror(socket_last_error($socket));
        socket_close($socket);
        return false;
    }
    $request = "";
    $request .= "GET $file HTTP/1.1\r\n";
    $request .= "Host: $host\r\n";
    $request .= "Connection: close\r\n\r\n";
    $len = socket_write($socket,$request);
 
    $response = "";
    while($buf=socket_read($socket,512)){
        if(strlen($buf) == 0){
            break;
        }
        $response .= $buf;
    }
    if(strpos($response,"\r\n\r\n")){
        $arr = explode("\r\n\r\n",$response);
        if(!file_exists($savepath)){
            @mkdir($savepath);
        }
        $savepath = rtrim($savepath,&#39;/&#39;).&#39;/&#39;;
        file_put_contents($savepath.basename($file),$arr[1]);
    }else{
        socket_close($socket);
        return false;
    }
    socket_close($socket);
    return true;
}
 
/* 获取百度logo */
$url = "http://su.bdimg.com/static/superplus/img/logo_white.png";
$result = get_remote_picture($url);
if($result){
    echo &#39;get remote picture success&#39;;
}else{
    echo &#39;get remote picture failed&#39;;
}


Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

SublimeText3 English version

SublimeText3 English version

Recommended: Win version, supports code prompts!

PhpStorm Mac version

PhpStorm Mac version

The latest (2018.2.1) professional PHP integrated development tool

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Integrate Eclipse with SAP NetWeaver application server.

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser is a secure browser environment for taking online exams securely. This software turns any computer into a secure workstation. It controls access to any utility and prevents students from using unauthorized resources.

WebStorm Mac version

WebStorm Mac version

Useful JavaScript development tools