php 保存远程服务器上图片,其实这也叫采集了,把远程服务器的图片保存到自己服务器上来,和采集文章差不多,采集图片就加一个header('content-type:image/png');申明文章的内容的类型,而文章就没必要了.
<?php
header('content-type:image/png');
echo file_get_contents("http://www.111cn.net/blog/upload/image/20080615055512.png");
?>
呵呵,你可以拿上面的代码去试一下哦,其实php功能很强大了,只是看你如何去使用了,如果用asp的话,那就相当的麻烦了.
本站原创转载请注明: www.111cn.net
<?php
include("inc/connect.php"); //数据库连接
include("inc/base_function.php"); //这里有get_value函数
$buy =get_value('buy',post);
$month =get_value('month',post);
$day =get_value('day',post);
$time =get_value('time',post);
$sum =get_value('sum',post);
$name =get_value('name',post);
$sex =get_value('sex',post);
$mo =get_value('mo',post);
$caption=get_value('caption',post);
$dtime =$month.'月'.$day.'日'.$time.'时';
if( empty($name) || empty($sum) || empty($mo) ){
alert('对不起,请认真填写你的定餐信息,以及我们及时与您取得联系!','');
}else{
$sql="Insert into gx_buy(buy,sum,name,sex,caption,mdt,mo) value('$buy','$sum','$name','$sex','$caption','$dtime','$mo')";
mysql_query($sql) or die(mysql_error());
alert('恭喜你,定餐成功,我们会在最短的时间与您取得联系!',$_SERVER['HTTP_REFERER']);
}
?>
php采集程序,今天我们来看看我用php来写采集程序吧,我们用最简单的的吧,很多网上的cms都支持在线采集,采集一些文章在很短的时间就可以采集很多文章,好了既然我们是程序员自己也来写个超简单的采集程序吧.先来看年实例:
<?php
$url =http://www.111cn.net/phper/php.html;
$handle =file_get_contents($url);
?>
OK上面的文章就被我们采集到自己的服务器上来了,但是我们要怎么处理这些数据呢?那得看你自己了,好了就这么简单的.
class Page {
// public param
public $pageName = 'page'; // 默认 page 标签,即 filename.php?pageName=4 中的 pageName
public $prevPage = '<'; // 上一页
public $nextPage = '>'; // 下一页
public $prevBar = '<<'; // 上一分页条
public $nextBar = '>>'; // 下一分页条
// private param
private $_totalNums = 1; // 总记录数
private $_barNum = 10; // 分页条显示分页个数
private $_totalPage = 0; // 总页数
private $_nowPage = 1; // 当前页
private $_perPage = 10; // 每页显示记录数
private $_preUrl = ''; // url 前缀
private $_preNow = 0; // 当前页前显示分页个数 (范围应该是 0 至 $_barNum-1)
private $_fromPage = 0; // 分页条起点
private $_toPage = 0; // 分页条末端
private $_offset = 0; // sql 查询记录偏移量
// public functions -----------------------------------------------------------------
// 构造函数 初始化分页变量
// @param $nums int 总记录数
// @param $per int 每页显示记录数
// @param $now int 当前页数
// @param $url string url前缀 默认为空
public function __construct($nums, $per = '', $preNow = '', $barNum = '', $now = '', $url = '') {
// 初始化
$this->_set($nums, $per, $preNow, $barNum, $now, $url);
$this->_totalPage = ceil($this->_totalNums/$this->_perPage);
$this->_offset = ($this->_nowPage - 1) * $this->_perPage;
}
// 上一页
public function getPrevPage() {
// 当前页不是第一页
if($this->_nowPage > 1) {
return $this->_setLink($this->_setUrl($this->_nowPage - 1), $this->prevPage, 'prevpage');
}
}
// 下一页
public function getNextPage() {
// 当前页小于总页数
if($this->_nowPage < $this->_totalPage) {
return $this->_setLink($this->_setUrl($this->_nowPage + 1), $this->nextPage, 'nextpage');
}
}
// 第一页
public function getFirstPage() {
// 起点不是第一页
if(($this->_nowPage - $this->_preNow) > 1) {
return $this->_setLink($this->_setUrl(1), '1...', 'firstpage');
}
}
// 最后一页
public function getLastPage() {
// 末端不大于总页数
if(($this->_nowPage - $this->_preNow + $this->_barNum) <= $this->_totalPage) {
return $this->_setLink($this->_setUrl($this->_totalPage), '...' . $this->_totalPage, 'lastpage');
}
}
// 上一分页条
public function getPrevBar() {
// 起点大于一个分页条数
if(($this->_nowPage - $this->_preNow) > $this->_barNum) {
return $this->_setLink($this->_setUrl(($this->_nowPage - $this->_preNow) - $this->_barNum), $this->prevBar, 'prevbar');
}
}
// 下一分页条
public function getNextBar() {
// 末端不大于总页数
if(($this->_nowPage - $this->_preNow + $this->_barNum) <= $this->_totalPage) {
return $this->_setLink($this->_setUrl($this->_fromPage + $this->_barNum), $this->nextBar, 'nextbar');
}
}
// 分页条
public function pageBar() {
// 初始化分页条的始末端点
$this->_toPage = $this->_nowPage + ($this->_barNum - $this->_preNow - 1);
if($this->_toPage > $this->_totalPage) {
$this->_preNow = $this->_barNum - ($this->_totalPage - $this->_nowPage + 1);
$this->_toPage = $this->_totalPage;
}
if($this->_toPage < $this->_barNum) {
$this->_toPage = $this->_barNum;
}
$this->_fromPage = $this->_nowPage - $this->_preNow;
if($this->_fromPage < 1) {
$this->_fromPage = 1;
}
// 初始化分页条
$return = '';
for($i = $this->_fromPage; $i <= $this->_toPage; $i++) {
if($i != $this->_nowPage) {
$return .= $this->_setLink($this->_setUrl($i), $i, 'page');
} else {
$return .= '<span class="nowpage">' . $i . '</span>';
}
}
return $return;
}
// 返回偏移量 用于 sql 查询
public function getOffset() {
return $this->_offset;
}
// 返回总记录数
public function getTotalNums() {
return '<span class="totalnums">' . $this->_totalNums . '</span>';
}
// 显示分页
public function showPage() {
return $this->getTotalNums() . $this->getFirstPage() . $this->getPrevBar() . $this->getPrevPage() . $this->pageBar() . $this->getNextPage() . $this->getNextBar() . $this->getLastPage();
}
// private functions ----------------------------------------------------------------
//
private function _set($nums, $per, $preNow, $barNum, $now, $url) {
// 设置总记录数
if($nums > 0) {
$this->_totalNums = $nums;
}
// 设置每页显示记录数
if($per > 0) {
$this->_perPage = $per;
}
// 设置当前页前显示分页个数
if($preNow > 0) {
$this->_preNow = $preNow;
}
// 设置分页条链接个数
if($barNum > 0) {
$this->_barNum = $barNum;
}
// 设置当前页
if(empty($now)) {
// 自动获取
if(isset($_GET[$this->pageName])) {
$this->_nowPage = intval($_GET[$this->pageName]);
}
} else {
// $now 已手动处理
$this->_nowPage = intval($now); //
}
// 设置 url 前缀
if(!empty($url)) {
// $url 已手动处理
$this->_preUrl = $url . (stristr($url, '?') ? '&' : '?') . $this->pageName . '=';
} else {
// 自动获取
if(empty($_SERVER['QUERY_STRING'])) {
// url 中不存在查询
$this->_preUrl = $_SERVER['REQUEST_URI'] . '?' . $this->pageName . '=';
} else {
if(stristr($_SERVER['QUERY_STRING'], $this->pageName . '=')) {
// 查询中有 page=n(2,3...)
$this->_preUrl = str_replace($this->pageName . '=' . $this->_nowPage, '', $_SERVER['REQUEST_URI']);
$lastCharacter = $this->_preUrl[strlen($this->_preUrl) - 1];
if($lastCharacter == '?' || $lastCharacter == '&') {
// page=n(2,3...) 在原 url 的末尾
$this->_preUrl .= $this->pageName . '=';
} else {
// page=n(2,3...) 不在原 url 的末尾
$this->_preUrl .= '&' . $this->pageName . '=';
}
} else {
// 查询中没有 page=n(2,3...)
$this->preUrl = $_SERVER['REQUEST_URI'] . '&' . $this->pageName . '=';
}
}
}
}
// 设置链接地址
private function _setUrl($pageNo) {
return $this->_preUrl . $pageNo;
}
// 设置链接
private function _setLink($url, $link, $style = '') {
$style = 'class="' . $style . '"';
return '<a href="' . $url . '" ' . $style . '>' . $link . '</a>';
}
}
//
使用方法
$total = 1245;
//class Page($nums, $per = '', $preNow = '', $barNum = '', $now = '', $url = '')
$page = new Page($total);
$pager = $page->showPage();
$smarty->assign('pager', $pager);
$smarty->display('index.tpl');
<?php php实现图片远程采集
//本程序为初学者入门,你可以随意更改使用
//如有问题或有什么改进和优化,还望与我分享 QQ:297535861
//与你一块进步。
//2007-12-26
function str_substr($str ,$statr, $end) { //字符串截取函数
$x = strpos($str, $statr);
return substr($str, $x+strlen($start), strpos($str, $end)-$x+strlen($end));
}
//////////////////////////////////////////////////
$url="[url=http://www.XXXXXXX.XXX/XXX]http://www.XXXXXXX.XXX/XXX";//[/url]给据采集内容自己定,这句上传后给自动加了连接,请去掉
$str=file_get_contents($url); ///file_get_contents -- 将整个文件读入一个字符串
$start='#######';//截取内容前的html 最后网页中唯一
$end='########';//截取内容后的html 最后网页中唯一
$content=str_substr($str , $start, $end);
//echo $content; //测试采集到的内容
echo '<hr>';
///////////////////////////////////////////////////
$img_array = array();
$content1 = stripslashes($content); //stripslashes函数作用是去掉字符串中的转义字符
if (get_magic_quotes_gpc()) $content1 = stripslashes($content1);
//echo $content1;//文章内容嘿嘿开始处理了
preg_match_all("/(src|SRC)="(http://(.+)/(.+).(gif|jpg|jpeg|bmp|png))/isU",$content1,$img_array,PREG_PATTERN_ORDER);//正则开始匹配所有的图片并放入数组$img_array中 ,=匹配规则可根据具体情况改写,这个通用性不强,还望那位高手给个通吃的匹配=
$img_array = array_unique($img_array[2]); //array_unique -- 移除数组中重复的值,$img_array[2]到现在没有高清楚,猜想可能是取出二维数组中的某组。
//print_r($img_array); //测试匹配到的内容
set_time_limit(0); //限定最大执行时间
//开始保存匹配内容中图片,修改名称并保存的本地文件夹中
foreach ($img_array as $key => $value) { //使用循环语句把匹配到的数组内容(图片)进行一一处理
if(file_get_contents($value)) $get_file = file_get_contents($value);//开始获取图片了哦 使用file_get_contents得到文件
else dir("出错");
$filetime = time(); //得到时间戳
$filepath = "pic2/".date("Ym",$filetime)."/";//图片保存的路径目录
!is_dir($filepath) ? mkdir($filepath) : null; //如果目录不存在,则创建目录,注意:要有相应的目录权限。
$filename = date("YmdHis",$filetime).rand(100,999).'.'.substr($value,-3,3); //生成文件名,rand(100,999)的作用是防止文件名重复
$fp = @fopen($filepath.$filename,"w"); //以写方式打开文件
@fwrite($fp,$get_file); //
fclose($fp);//完工,哈
$content1 = preg_replace("/".addcslashes($value,"/")."/isU", "pic2/".date("Ym",$filetime)."/".$filename, $content1); //顺便替换一下文章里面的图片地址
echo $value.'=>'.'pic2/'.date('Ym',$filetime).'/'.$filename.'<br>'; //测试图片复制前后,路径是否正常。
}
echo '<hr>';
echo $content1; //可把$content1存入数据库
?>