采集远程图片图片并且替换图片地址代码

 更新时间:2016年11月25日 16:28  点击:2377
现在用php采集远程图片是很简单的事情,但是我们要把采集过来的数据进行过滤,这恐怕得用到正则表达式了,下面的程序是采集远程图片图片并且替换图片地址代码。

$dir_date=date('y/m/d');//日期文件夹
$dir_name="images/$dir_date";//文件夹路径
function mkdirm($path) //取文件夹名
{
if (!file_exists($path)) //判断是否存在
{
mkdirm(dirname($path)); //返回路径中的目录部分
mkdir($path, 0777); //创建文件夹和权限
}
}
mkdirm($dir_name);//创建文件夹
//$files = file_get_contents('http://www.ywsp.com');
$files ='<img src="http://img.111cn.net/img/bid_v2/bid_v2_content/p_bid.gif" alt="普通任务" /><img width="272px" height="60px" style="padding-top: 10px;" src="http://img.111cn.net/img/index_v3/20100611001.gif">';
// 图片地址转换一下   $p=preg_replace('//image//', 'http://qq.ip138.com/image/', $pg[1]);
 $reg = "/<img[^>]*src="(http://(.+)/(.+).(jpg|gif|bmp|bnp))"/isu";
$img=preg_match_all($reg,$files,$imgs);

for ($i=0;$i<count($imgs[0]);$i++)
{

//echo "".$imgs[1][$i]." <br> ";
//保存图片
$opts = array(
  'http'=>array(
    'header'=>"referer: http://www.111cn.net/ "
  )
);
$context = stream_context_create($opts);
header( 'content-type: image/jpeg' );
$fileresource = @file_get_contents( $imgs[1][$i],false,$context) ;
$image_old.=""".$imgs[1][$i].""".","; //先把所有网址变为一个数如1,2,3,4
$image_new.=""".$dir_name."/".mktime().$i.".jpg".""".","; //先把所有新的图片地址变为一个数如1,2,3,4
file_put_contents($dir_name."/".mktime().$i.".jpg", $fileresource);
//保存图片
}
$image_old=substr($image_old,0,(strlen($image_old)-1));//把网址最后个逗号去掉
$image_new=substr($image_new,0,(strlen($image_new)-1));//把新网址最后个逗号去掉
//print_r($p);

$image_old=explode(",",$image_old);//分割多个
$image_new=explode(",",$image_new);//分割多个

$files=str_replace($image_old,$image_new,$files); //把网址跟新的图片网址调用进去替换
echo $files;

 代码如下 复制代码

session_start();
include("mysql教程.class.php");
$db=new mysql('localhost', 'root', '', 'flx', 'conn', 'gbk');
  // 为方便测试,这里只是简单定义了一个特定的用户,在实际操作中,用户信息从数据库教程中得出;
   define('user','admin');
   define('pw', 123);
 $db->findall('limit_login');
 $row=$db->fetch_array();
 //print_r($row);
  if($_post['submit']){
   $username=$_post["username"];
      $pw=$_post["pw"];
      $_session['time']=time();
  /* 错误次数超限判断*/
   // 对于登陆出错超过三次的用户,如果现在时间,减去开始登陆的时间,小于特定的值时,就不允
许在登陆;
 if($username==user){
  //这里用户可以试着登陆3次,,下面写为2,是因为页面刷新与数据库的连接不同步,
  // 就是说,第二次的错误信息插入数据库时,这里获取的信息,还是第一次的,实际用户出错的
次数已经多一次了;
  if($row['login_times']>2){
   $current=time();
   $passed_time=$current-$row['login_date'];
   echo '现在已经过了'.$passed_time.'秒<br>';
   // 设定时间 900秒,在此时间段内,特定用户不能登陆系统;按
   if(($current-$row['login_date'])<900){
    //$test_pw=substr(md5(rand()),0,10);
    //现在admin (特定用户)用户已经登陆错误大于3次,那在限定的时间内,
    //即使他的密码输入正确,也不能在登陆系统;
    if($pw==pw){
       exit('你密码输入错误次数大于三次,请在15分钟后登陆系统!');
    }
    // 当然,这位用户输入的密码不是正确的密码,也给出这样的提示;
    if($pw!=pw){
     exit('你密码输入错误次数大于三次,请在15分钟后登陆系统!');
    }
   }else{
    //此时已经过了限制的时间,这位用户可以登陆了,在此用户在登陆之前,要把前次登陆的时间
清零;
    $mod_content="`login_times`=0,`login_date`=0";
     $condition="`id`=1";
        $db->update('limit_login',$mod_content,$condition);
   }
  }
 }

 

/* 用户登陆操作*/ 
  

 代码如下 复制代码
if($username&&$pw){
      if($username==user&&$pw==pw){
       /* 用户登陆成功,*/
     // 更新数据表;表登陆次数和时间,都置零;
     $mod_content="`login_times`=0,`login_date`=0";
     $condition="`id`=1";
      $db->update('limit_login',$mod_content,$condition);
      echo '<script language="网页特效" type="text/网页特效">' .
         'window.location="success.php"</script>';
      }else{
       //在第一次出错时,设置密码出错次数为1,把登陆时是session 保存的时间放入数据库;
       if($row['login_times']==0&&$row['login_date']==0){
        $mod_content="`login_times`=1,`login_date`='".$_session['time']."'";
     $condition="`id`=1";
        $db->update('limit_login',$mod_content,$condition);
       }else{
        $mod_content="`login_times`=`login_times`+1";
     $condition="`id`=1";
        $db->update('limit_login',$mod_content,$condition);
       }
  /*  提示用户还有几次机会*/
        if($row['login_times']<3){
         $row['login_times']++;// 这里登陆次数加1,和上面的说的原因一样,是因不能同步连接
数据库所致;
         echo'密码错误!错误次数为:'.$row['login_times'].'次<br>';
          $remain_times=3-$row['login_times'];
          echo '你还有'.$remain_times.'登陆机会';
        }
      }
   }else{
    echo '用户名和密码不能为空!';
   }
  }
 


 
?>

  <form action="" method="post" >
  username:<input type="text" name="username" value=""  maxlength="40"/><br>
  password:<input type="password" name="pw" /><br>

  <input type="submit" name="submit" value="login"/>
 
  </form> 

这款批量生成缩略图代码可以生成指定大小的小图哦,并且支持文件批量上传。

这款教程会用到php文件
view.php
config.php
funs.php
index.php


功能:
-----------------------
1.为文件夹里的图片生成指定大小缩略图
2.列出子文件夹, 可以指定生生某文件夹生成
3.为方便不同大小的缩图生成,图片保存到新的目录,而目录结构不变

实现:
-----------------------
1.图片原文件夹   $image
2.处理后保存在   $newimage
 保持目录结构和文件名不变(方便调用)
3.如果在新的文件夹里图片已经存在,直接跳过

操作界面:
-----------------------
1.$image 输入框
2.$newimage 输入框(若没填写,刚为当前目录平级的以缩略大小为文件名的目录)
3.按扭"搜索",列出所有文件夹,生成缓存,写到文件.
4.生成.     生成子目录

*/
?>
//index.php代码

<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
 <head>
  <meta http-equiv="content-type" content="text/html; charset=gb2312">
  <title>生成缩略图</title>
</head>
 <body>
<?php
/* +-------------------------------------------------------------+
 * | copyright (c) 2008-2009 yese.in all rights reserved.       
 * +-------------------------------------------------------------+
 * | author: wbsifan <wbsifan@163.com>   <qq:29500196>          
 * +-------------------------------------------------------------+ 
 * | filename : index.php v0.1
 * | update   : 2008-07-01
 * | content  : 生成缩略图 
 * +-------------------------------------------------------------+
 */

 代码如下 复制代码
<!doctype html public "-//w3c//dtd html 4.01 transitional//en" "http://www.w3.org/tr/html4/loose.dtd">
  2  <html>
  3  <head>
  4     <title>投票结果</title>
  5     <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  6
  7  <script type="text/网页特效">
  8
  9     function getxmlhttpobject()
 10 {
 11   var xmlhttp=null;
 12   try
 13     {
 14     // firefox, opera 8.0+, safari
 15      xmlhttp=new xmlhttprequest();
 16     }
 17   catch (e)
 18     {
 19     // internet explorer
 20     try
 21       {
 22       xmlhttp=new activexobject("msxml2.xmlhttp");
 23       }
 24     catch (e)
 25       {
 26       xmlhttp=new activexobject("microsoft.xmlhttp");
 27       }
 28     }
 29   return xmlhttp;
 30 }
 31 function checkajax(){
 32    xmlhttp=getxmlhttpobject()
 33  
 34   if (xmlhttp==null)
 35     {
 36     alert ("您的浏览器不支持ajax!");
 37     return ;
 38     }else
 39     {
 40        return xmlhttp;
 41     }
 42 }
 43 function preshow(){
 44     ajaxobj = checkajax();
 45     var url = "page.php?page=1";
 46 ajaxobj.onreadystatechange=statechanged;
 47 ajaxobj.open("get",url,true);
 48 ajaxobj.send(null);
 49 }
 50 function showhint1(str)
 51 {
 52     ajaxobj = checkajax();
 53     document.getelementbyid("msg").innerhtml="正在读取数据……";
 54
 55 var url = str;
 56 ajaxobj.onreadystatechange=statechanged;
 57 ajaxobj.open("get",url,true);
 58 ajaxobj.send(null);
 59
 60 }

 

<!doctype html public "-//w3c//dtd xhtml 1.0 transitional//en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd">
<html xmlns="http://www.111cn.net1999/xhtml">

<head>
<meta content="text/html; charset=gb2312" http-equiv="content-type" />
<title>多个文件上传(php+网页特效可动态增加文件上传框)</title>
<script language="网页特效" type="text/网页特效">
function addinput()//增加input节点
{
var input=document.createelement('input');//创建一个input节点
var br=document.createelement('br');//创建一个br节点
input.setattribute('type','file');// 设置input节点type属性为file
input.setattribute('name','pic[]');//设置input节点 name属性为files[],以 数组的方式传递给服务器端
document.form1.appendchild(br);//把节点添加到 form1表单中
document.form1.appendchild(input);
}
</script>
</head>
<?php
if($_post['sub'])
{
$ftype=array('image/jpg','image /jpeg','imgage/png','image/pjpeg','image/gif');//允许上传的文件类型
$files=$_files['files'];
$fnum=count($files['name']); //取得上传文件个数
for($i=0;$i<$fnum;$i++)
{
   if($files['name'][$i]!=''&&is_uploaded_file($files['tmp_name'][$i]))
   {
    if(in_array($files['type'][$i],$ftype))//判断文件是否是允许的类型
    {
     $fname='upfile/'.rand(0,10000).time().substr($files['name'] [$i],strrpos($files['name'][$i],'.'));//自动命名
     move_uploaded_file($files['tmp_name'][$i],$fname);
     echo '<br/>文件上传成功!';
    }
    else
    {
     echo '<br/>不允许的文件类型!';
    }
   }
   else
   {
    echo '<br/>该文件不存在!';
   }
}

}
?>
<body>
<form name="form1" method="post" action="" enctype="multipart/form-data" >
    <input type="file" name="pic[]" />
<input type="submit" name="sub" value="上传"/>
</form>
<a href="#" onclick="addinput()">再上传一张</a>
</body>

</html>

[!--infotagslink--]

相关文章

  • 使用PHP+JavaScript将HTML页面转换为图片的实例分享

    这篇文章主要介绍了使用PHP+JavaScript将HTML元素转换为图片的实例分享,文后结果的截图只能体现出替换的字体,也不能说将静态页面转为图片可以加快加载,只是这种做法比较interesting XD需要的朋友可以参考下...2016-04-19
  • C#从数据库读取图片并保存的两种方法

    这篇文章主要介绍了C#从数据库读取图片并保存的方法,帮助大家更好的理解和使用c#,感兴趣的朋友可以了解下...2021-01-16
  • Photoshop古装美女图片转为工笔画效果制作教程

    今天小编在这里就来给各位Photoshop的这一款软件的使用者们来说说把古装美女图片转为细腻的工笔画效果的制作教程,各位想知道方法的使用者们,那么下面就快来跟着小编一...2016-09-14
  • Python 图片转数组,二进制互转操作

    这篇文章主要介绍了Python 图片转数组,二进制互转操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-09
  • php抓取网站图片并保存的实现方法

    php如何实现抓取网页图片,相较于手动的粘贴复制,使用小程序要方便快捷多了,喜欢编程的人总会喜欢制作一些简单有用的小软件,最近就参考了网上一个php抓取图片代码,封装了一个php远程抓取图片的类,测试了一下,效果还不错分享...2015-10-30
  • jquery左右滚动焦点图banner图片鼠标经过显示上下页按钮

    jquery左右滚动焦点图banner图片鼠标经过显示上下页按钮...2013-10-13
  • 利用JS实现点击按钮后图片自动切换的简单方法

    下面小编就为大家带来一篇利用JS实现点击按钮后图片自动切换的简单方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2016-10-25
  • js实现上传图片及时预览

    这篇文章主要为大家详细介绍了js实现上传图片及时预览的相关资料,具有一定的参考价值,感兴趣的朋友可以参考一下...2016-05-09
  • Photoshop枪战电影海报图片制作教程

    Photoshop的这一款软件小编相信很多的人都已经是使用过了吧,那么今天小编在这里就给大家带来了用Photoshop软件制作枪战电影海报的教程,想知道制作步骤的玩家们,那么下面...2016-09-14
  • python opencv通过4坐标剪裁图片

    图片剪裁是常用的方法,那么如何通过4坐标剪裁图片,本文就详细的来介绍一下,感兴趣的小伙伴们可以参考一下...2021-06-04
  • 使用PHP下载CSS文件中的图片的代码

    共享一段使用PHP下载CSS文件中的图片的代码 复制代码 代码如下: <?php //note 设置PHP超时时间 set_time_limit(0); //note 取得样式文件内容 $styleFileContent = file_get_contents('images/style.css'); //not...2013-10-04
  • 微信小程序如何获取图片宽度与高度

    这篇文章主要给大家介绍了关于微信小程序如何获取图片宽度与高度的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-10
  • PHP swfupload图片上传的实例代码

    PHP代码如下:复制代码 代码如下:if (isset($_FILES["Filedata"]) || !is_uploaded_file($_FILES["Filedata"]["tmp_name"]) || $_FILES["Filedata"]["error"] != 0) { $upload_file = $_FILES['Filedata']; $fil...2013-10-04
  • C#中图片旋转和翻转(RotateFlipType)用法分析

    这篇文章主要介绍了C#中图片旋转和翻转(RotateFlipType)用法,实例分析了C#图片旋转及翻转Image.RotateFlip方法属性的常用设置技巧,需要的朋友可以参考下...2020-06-25
  • ps怎么制作图片阴影效果

    ps软件是现在很多人比较喜欢的,有着非常不错的使用效果,这次文章就给大家介绍下ps怎么制作图片阴影效果,还不知道制作方法的赶紧来看看。 ps图片阴影效果怎么做方法/...2017-07-06
  • OpenCV如何去除图片中的阴影的实现

    这篇文章主要介绍了OpenCV如何去除图片中的阴影的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-29
  • C#将图片和字节流互相转换并显示到页面上

    本文主要介绍用C#实现图片转换成字节流,字节流转换成图片,并根据图片路径返回图片的字节流,有需要的朋友可以参考下...2020-06-25
  • JavaScript 如何禁止用户保存图片

    这篇文章主要介绍了JavaScript 如何禁止用户保存图片,帮助大家完成需求,更好的理解和使用JavaScript,感兴趣的朋友可以了解下...2020-11-19
  • php上传图片学习笔记与心得

    我们在php中上传文件就必须使用#_FILE变量了,这个自动全局变量 $_FILES 从 PHP 4.1.0 版本开始被支持。在这之前,从 4.0.0 版本开始,PHP 支持 $HTTP_POST_FILES 数组。这...2016-11-25
  • JS实现图片的不间断连续滚动的简单实例

    下面小编就为大家带来一篇JS实现图片的不间断连续滚动的简单实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2016-06-12