1、通过fsockopen函数判断
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
<?php /* 函数:remote_file_exists 功能:判断远程文件是否存在 参数: $url_file -远程文件URL 返回:存在返回true,不存在或者其他原因返回false */ function remote_file_exists($url_file){ //检测输入 $url_file = trim($url_file); if (empty($url_file)) { return false; } $url_arr = parse_url($url_file); if (!is_array($url_arr) || empty($url_arr)){return false; } //获取请求数据 $host = $url_arr['host']; $path = $url_arr['path'] ."?".$url_arr['query']; $port = isset($url_arr['port']) ?$url_arr['port'] : "80"; //连接服务器 $fp = fsockopen($host, $port, $err_no, $err_str,30); if (!$fp){ return false; } //构造请求协议 $request_str = "GET ".$path."HTTP/1.1\r\n"; $request_str .= "Host:".$host."\r\n"; $request_str .= "Connection:Close\r\n\r\n"; //发送请求 fwrite($fp,$request_str); $first_header = fgets($fp, 1024); fclose($fp); //判断文件是否存在 if (trim($first_header) == ""){ return false; } if (!preg_match("/200/", $first_header)){ return false; } return true; } ?> |
函数描述及例子
1 2 3 4 5 6 |
<? //测试代码 $str_url = 'http://127.0.0.2/viewarticle.php?id=119617'; $exits = remote_file_exists($str_url); echo $exists ? "Exists" : "Not exists"; ?> |
2、通过file_get_contents函数判断
1 2 3 4 5 |
<?php $url = "http://cn.wordpress.org/wordpress-3.3.1-zh_CN.zip"; $fileExists = @file_get_contents($url, null, null, -1, 1) ? true : false; echo $fileExists; //返回1,就说明文件存在。 ?> |
3、通过curl组件判断
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
<?php function check_remote_file_exists($url) { $curl = curl_init($url); // 不取回数据 curl_setopt($curl, CURLOPT_NOBODY, true); curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'GET'); // 发送请求 $result = curl_exec($curl); $found = false; // 如果请求没有发送失败 if ($result !== false) { /** 再检查http响应码是否为200 */ $statusCode = curl_getinfo($curl, CURLINFO_HTTP_CODE); if ($statusCode == 200) { $found = true; } } curl_close($curl); return $found; } $url = "http://cn.wordpress.org/wordpress-3.3.1-zh_CN.zip"; echo check_remote_file_exists($url); // 返回1,说明存在。 ?> |
4、通过fopen方法判断
1 2 3 4 5 6 7 8 9 10 11 12 |
<?php $url = 'http://www.nowamagic.net/images/test.jpg'; if( @fopen( $url, 'r' ) ) { echo 'File Exits'; } else { echo 'File Do Not Exits'; } ?> |
具体各函数的优缺点欢迎评论讨论。