PHP 获取远程文件内容的函数代码
程序员文章站
2023-04-07 22:15:33
如下函数: 复制代码 代码如下: /** 获取远程文件内容 @param $url 文件http地址 */ function fopen_url($url) {...
如下函数:
<?
/**
获取远程文件内容
@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;
}
?>
相关解释:
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
下面是一些参考代码:
php 采集程序 常用函数
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;
}
?>
相关解释:
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
下面是一些参考代码:
php 采集程序 常用函数
php 采集获取指定网址的内容
下一篇: Python 网络编程说明第1/2页