PHP 获取远程文件内容

如下函数:

<?
/** 
    获取远程文件内容 
    @param $url 文件http地址 
*/
function fopen_url($url) 
{ 
    if (function_exists('file_get_contents')) { 
        $file_content = @file_get_contents($url); 
    } elseif (ini_get('allow_url_fopen') && ($file = @fopen($url, 'rb'))){ 
        $i = 0; 
        while (!feof($file) && $i++ < 1000) { 
            $file_content .= strtolower(fread($file, 4096)); 
        } 
        fclose($file); 
    } elseif (function_exists('curl_init')) { 
        $curl_handle = curl_init(); 
        curl_setopt($curl_handle, CURLOPT_URL, $url); 
        curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT,2); 
        curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER,1); 
        curl_setopt($curl_handle, CURLOPT_FAILONERROR,1); 
        curl_setopt($curl_handle, CURLOPT_USERAGENT, 'Trackback Spam Check'); //引用垃圾邮件检查
        $file_content = curl_exec($curl_handle); 
        curl_close($curl_handle); 
    } else { 
        $file_content = ''; 
    } 
    return $file_content; 
}
?> 

 模拟POST提交方式 

header("Content-type: text/html; charset=utf-8"); //解决中文乱码
/**
     * 模拟post进行url请求
     * @param string $url
     * @param array $post_data
     */
    function request_post($url = '', $post_data = array()) {
        if (empty($url) || empty($post_data)) {
            return false;
        }

        $postUrl = $url;
        $curlPost = $post_data;
        $ch = curl_init();//初始化curl
        curl_setopt($ch, CURLOPT_URL,$postUrl);//抓取指定网页
        curl_setopt($ch, CURLOPT_HEADER, 0);//设置header
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//要求结果为字符串且输出到屏幕上
        curl_setopt($ch, CURLOPT_POST, 1);//post提交方式
        curl_setopt($ch, CURLOPT_ENCODING, "");//解压
        //curl_setopt($ch, CURLOPT_HTTPHEADER, array('Accept-Encoding: gzip, deflate,flate'));
        curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); //不验证证书下同
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); //不验证证书下同
        $data = curl_exec($ch);//运行curl
        curl_close($ch);
         //$res=json_decode($data,true);
        return $data;
    }

 

相关解释:

1,ini_get : Returns the value of the configuration option as a string on success, or an empty string on failure(读取 php.ini 配置文件中的值)
2,; Whether to allow the treatment of URLs (like http:// or ftp://) as files.
 allow_url_fopen = On(配置文件中的内容)

3,fopen(   "rb"): 在操作二进制文件时如果没有指定 'b' 标记,可能会碰到一些奇怪的问题,包括坏掉的图片文件以及关于 \r\n 字符的奇怪问题。 

注意: 为移植性考虑,强烈建议在用 fopen() 打开文件时总是使用 'b' 标记。 

注意: 再一次,为移植性考虑,强烈建议你重写那些依赖于 't' 模式的代码使其使用正确的行结束符并改成 'b' 模式。 

4,strtolower -- Make a string lowercase

5,curl_init() :curl_init -- Initialize a cURL session(初始化一个cUrl会话)

resource curl_init ( [string url] )

Initializes a new session and return a cURL handle for use with the curl_setopt(), curl_exec(), and curl_close() functions. 

url--If provided, the CURLOPT_URL option will be set to its value. You can manually set this using the curl_setopt() function. 

Returns a cURL handle on success, FALSE on errors. 

6,curl_setopt -- Set an option for a cURL transfer(提供设置)

bool curl_setopt ( resource ch, int option, mixed value )

Sets an option on the given cURL session handle. (具体请看 PHP 手册) There:

CURLOPT_URL :The URL to fetch. You can also set this when initializing a session with curl_init(). 

CURLOPT_CONNECTTIMEOUT :The number of seconds to wait whilst trying to connect. Use 0 to wait indefinitely.(无限期等待 设置为 0)

CURLOPT_RETURNTRANSFER :TRUE to return the transfer as a string of the return value of curl_exec() instead of outputting it out directly. 

CURLOPT_FAILONERROR :TRUE to fail silently if the HTTP code returned is greater than or equal to 400. The default behavior is to return the page normally, ignoring the code. 

CURLOPT_USERAGENT :The contents of the "User-Agent: " header to be used in a HTTP request.

7,curl_exec : Perform a cURL session, This function should be called after you initialize a cURL session and all the options for the session are set. 

如果成功则返回 TRUE,失败则返回 FALSE。 However, if the CURLOPT_RETURNTRANSFER option is set, it will return the result on success, FALSE on failure

8,curl_close -- Close a cURL session

 

posted @ 2016-10-12 10:24  智昕  阅读(813)  评论(0编辑  收藏  举报