21,886
社区成员
发帖
与我相关
我的任务
分享
$url="http://www.netbian.com/";
$string=curl_get($url);
preg_match_all("/<img([^>]*)\s*src=('|\")([^'\"]+)('|\")/", $string,$matches,PREG_PATTERN_ORDER);
$new_arr=$matches[3];
for($i=$_GET['i'];$i<strlen($new_arr);$i++)
{
saveto("get_img/".rand(1,1000)."_".time().".jpg",$new_arr[$i]);
//问题应该出在这里,$new_arr[$i]难道不能获取图片的url吗? 因为输出图片地址是空的,获取到的图片也是空图片。
//$new_arr=$matches[3];应该是图片url数组啊,那取数组的元素这样写$new_arr[$i]有什么问题?
}
function saveto($toname,$img_url)
{
$img_content=https_get_post($img_url);
file_put_contents($toname,$img_content);
echo "img_url:".$img_url."</br>";
}
function https_get_post($url,$data=null)
{
$curl = curl_init();//初始化一个curl会话;
curl_setopt($curl,CURLOPT_URL,$url);//指定访问的url
curl_setopt($curl, CURLOPT_HEADER,0);
curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);//0直接返回内容,1以文件流形式返回
curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,false);//CURLOPT_SSL_VERIFYPEER 设置为FALSE 禁止 cURL 验证对等证书(peer’s certificate)。要验证的交换证书可以在 CURLOPT_CAINFO 选项中设置,或在 CURLOPT_CAPATH中设置证书目录。
curl_setopt($curl,CURLOPT_SSL_VERIFYHOST,false);//CURLOPT_SSL_VERIFYHOST 设置为 1 是检查服务器SSL证书中是否存在一个公用名(common name)。译者注:公用名(Common Name)一般来讲就是填写你将要申请SSL证书的域名 (domain)或子域名(sub domain)。 设置成 2,会检查公用名是否存在,并且是否与提供的主机名匹配。 在生产环境中,这个值应该是 2(默认值)。
if(!empty($data))//post,否则get
{
curl_setopt($curl,CURLOPT_POST, 1);//带参数post
curl_setopt($curl,CURLOPT_POSTFIELDS,$data);//传递数据
}
$output = curl_exec($curl);//执行curl;
curl_close($curl); // 关闭CURL会话
return $output;
}
$url = "http://www.netbian.com/";
$string = file_get_contents($url);
preg_match_all("/<img([^>]*)\s*src=('|\")([^'\"]+)('|\")/", $string,$matches,PREG_PATTERN_ORDER);
$new_arr = $matches[3];
//print_r($new_arr);
echo file_get_contents($new_arr[1]);