路过的php大牛,进来看看,关于远程保存图片的。

woyaodubo 2017-11-27 04:50:33

$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>";
}
...全文
185 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
woyaodubo 2017-12-01
  • 打赏
  • 举报
回复
哇哇哇,又是我自己解决了,看来本座的水平在不断提高了哦。
woyaodubo 2017-11-27
  • 打赏
  • 举报
回复
引用 7 楼 xuzuning 的回复:
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;
}
woyaodubo 2017-11-27
  • 打赏
  • 举报
回复
引用 6 楼 xuzuning 的回复:
谁知道你那自定义函数有什么问题
$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]);
定义的函数没有问题,我试过的。一直在用的
xuzuning 2017-11-27
  • 打赏
  • 举报
回复
xuzuning 2017-11-27
  • 打赏
  • 举报
回复
谁知道你那自定义函数有什么问题
$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]);
woyaodubo 2017-11-27
  • 打赏
  • 举报
回复
引用 3 楼 xuzuning 的回复:
https_get_post 是什么?
$url="http://www.netbian.com/"; $string=https_get_post($url); preg_match_all("/<img([^>]*)\s*src=('|\")([^'\"]+)('|\")/", $string,$matches,PREG_PATTERN_ORDER); $new_arr=$matches[3];//这个是数组啊 //为什么$matches[3][0]确获取不到元素?
woyaodubo 2017-11-27
  • 打赏
  • 举报
回复
引用 3 楼 xuzuning 的回复:
https_get_post 是什么?
curl返回网页的字符串
xuzuning 2017-11-27
  • 打赏
  • 举报
回复
https_get_post 是什么?
woyaodubo 2017-11-27
  • 打赏
  • 举报
回复
高手高高手都哪去了?
woyaodubo 2017-11-27
  • 打赏
  • 举报
回复
一定要通过i下标来取元素,因为i要从js传过来的, 不能用foreach,

21,893

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧