<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Welcome extends MY_Controller {
public function __construct(){
parent::__construct();
$this->load->model('News_model',"news");
}
/**
* 信息采集
*
* @author: BING
*/
public function gather(){
//打开网页
$url="http://news.ifeng.com/mainland/";
$str=file_get_contents($url);
//$str=iconv("GBK", "utf-8", $str);
//粗略正则验证
$reg='#<div class="juti_new">.*<div class="dianj box">#isU';
preg_match($reg, $str, $arr);
//var_dump($arr);
//精确正则
$reg1='#<div class="ju_pic"><a href=".*" target="_blank" title="(.*)"><img src="(.*)" .*></a></div>#isU';
preg_match_all($reg1, $arr[0], $title);
//var_dump($title);
//精确正则
$reg2='#<span>(.*)</span>#isU';
preg_match_all($reg2, $arr[0], $time);
//var_dump($time);
//循环下载图片
foreach ($title[2] as $key => $val) {
$st=file_get_contents($val);
$ext=substr($val, strrpos($val, "."));
$filename="uploads/".time().rand().$ext;
file_put_contents($filename, $st);
//插入信息
$data=array(
"title"=>$title[1][$key],
"img"=>$filename,
"time"=>$time[1][$key]
);
$re=$this->db->insert("news",$data);
if ($re) {
//最后插入id
$in_id=$this->db->insert_id();
//替换模板
$str=file_get_contents("application/views/new.html");
$str=str_replace("{title}", $data['title'], $str);
$str=str_replace("{img}", $data['img'], $str);
$str=str_replace("{time}", $data['time'], $str);
//生成文件名
$file=md5(time().$in_id).".html";
//生成静态文件
file_put_contents("application/cache/".$file, $str);
//修改数据库
$res=$this->db->where("id=$in_id")->update('news',array("action"=>$file));
}else{
echo 0;die;
}
}
if ($res&&$re) {
redirect('/Welcome/news_list', 'refresh');
}
}
//分页展示
public function news_list(){
//接page;
$page = $this->uri->segment(3,1);
//分页的每页显示条数
$lengh=3;
//链接mem
$mem=new Memcache;
$mem->connect("127.0.0.1",11211);
if (!empty($_GET['keywords'])) {
$keywords=$_GET['keywords'];
//如果存在keywords从mem获取值
$num=$mem->get($keywords);
//判断次数
if ($num) {
$mem->set($keywords,$num+1);
if ($num>10) {
//从mem中读取数组
$data=$mem->get('data'.$keywords);
if ($data) {
//查询新闻总数
$count=count($data);
//按照分页取出相应新闻
$start=($page-1)*$lengh;
$list=array_splice($data, $start , $lengh);
//var_dump($list."10");die;
}else{
$mem->set($keywords,1);
$count=$this->news->num($keywords);
$list=$this->news->select($page,$keywords);
}
}elseif ($num==10) {
$data=$this->db->like('title',$keywords)->get('news')->result_array();
//将查询的数据存入mem
$mem->set("data".$keywords,$data,false, 30*60);
$count=count($data);
$list=$this->news->select($page,$keywords);
//var_dump($list."2");die;
}else{
//直接从数据库读取数据
$count=$this->news->num($keywords);
$list=$this->news->select($page,$keywords);
//var_dump($list."1");die;
}
}else{
$mem->set($keywords,1);
$count=$this->news->num($keywords);
$list=$this->news->select($page,$keywords);
//var_dump($list."0");die;
}
}else{
$keywords='';
$count=$this->news->total_num($keywords);
$list=$this->news->select($page,$keywords);
}
//分页
$pages=ceil($count/$lengh);
$prev=$page<=1?1:$page-1;
$next=$page>=$pages?$pages:$page+1;
$url=base_url()."Welcome/news_list";
$links='<a href="'.$url.'/1.html?keywords='.$keywords.'">首页</a><a href="'.$url.'/'.$prev.'.html?keywords='.$keywords.'">上一页</a><a href="'.$url.'/'.$next.'.html?keywords='.$keywords.'">下一页</a><a href="'.$url.'/'.$pages.'.html?keywords='.$keywords.'">尾页</a>';
$this->load->vars('list',$list);
$this->load->vars('keywords',$keywords);
$this->load->vars('page',$links);
$this->load->view("list.html");
}
//详情展示
public function news(){
//$id=$_GET['id'];
$id = $this->uri->segment(3,1);
$re=$this->db->where("id=$id")->get('news')->row_array();
$str=file_get_contents("application/cache/".$re['action']);
echo "yes".$str;
}
//防盗链
public function error(){
header("content-type:text/html;charset=utf8");
$str=file_get_contents("http://hao.360.cn/?360sd");
//$str=iconv("GBK", "utf8", $str);
$this->load->vars('str',$str);
$this->load->view('error.html');
}
}
defined('BASEPATH') OR exit('No direct script access allowed');
class Welcome extends MY_Controller {
public function __construct(){
parent::__construct();
$this->load->model('News_model',"news");
}
/**
* 信息采集
*
* @author: BING
*/
public function gather(){
//打开网页
$url="http://news.ifeng.com/mainland/";
$str=file_get_contents($url);
//$str=iconv("GBK", "utf-8", $str);
//粗略正则验证
$reg='#<div class="juti_new">.*<div class="dianj box">#isU';
preg_match($reg, $str, $arr);
//var_dump($arr);
//精确正则
$reg1='#<div class="ju_pic"><a href=".*" target="_blank" title="(.*)"><img src="(.*)" .*></a></div>#isU';
preg_match_all($reg1, $arr[0], $title);
//var_dump($title);
//精确正则
$reg2='#<span>(.*)</span>#isU';
preg_match_all($reg2, $arr[0], $time);
//var_dump($time);
//循环下载图片
foreach ($title[2] as $key => $val) {
$st=file_get_contents($val);
$ext=substr($val, strrpos($val, "."));
$filename="uploads/".time().rand().$ext;
file_put_contents($filename, $st);
//插入信息
$data=array(
"title"=>$title[1][$key],
"img"=>$filename,
"time"=>$time[1][$key]
);
$re=$this->db->insert("news",$data);
if ($re) {
//最后插入id
$in_id=$this->db->insert_id();
//替换模板
$str=file_get_contents("application/views/new.html");
$str=str_replace("{title}", $data['title'], $str);
$str=str_replace("{img}", $data['img'], $str);
$str=str_replace("{time}", $data['time'], $str);
//生成文件名
$file=md5(time().$in_id).".html";
//生成静态文件
file_put_contents("application/cache/".$file, $str);
//修改数据库
$res=$this->db->where("id=$in_id")->update('news',array("action"=>$file));
}else{
echo 0;die;
}
}
if ($res&&$re) {
redirect('/Welcome/news_list', 'refresh');
}
}
//分页展示
public function news_list(){
//接page;
$page = $this->uri->segment(3,1);
//分页的每页显示条数
$lengh=3;
//链接mem
$mem=new Memcache;
$mem->connect("127.0.0.1",11211);
if (!empty($_GET['keywords'])) {
$keywords=$_GET['keywords'];
//如果存在keywords从mem获取值
$num=$mem->get($keywords);
//判断次数
if ($num) {
$mem->set($keywords,$num+1);
if ($num>10) {
//从mem中读取数组
$data=$mem->get('data'.$keywords);
if ($data) {
//查询新闻总数
$count=count($data);
//按照分页取出相应新闻
$start=($page-1)*$lengh;
$list=array_splice($data, $start , $lengh);
//var_dump($list."10");die;
}else{
$mem->set($keywords,1);
$count=$this->news->num($keywords);
$list=$this->news->select($page,$keywords);
}
}elseif ($num==10) {
$data=$this->db->like('title',$keywords)->get('news')->result_array();
//将查询的数据存入mem
$mem->set("data".$keywords,$data,false, 30*60);
$count=count($data);
$list=$this->news->select($page,$keywords);
//var_dump($list."2");die;
}else{
//直接从数据库读取数据
$count=$this->news->num($keywords);
$list=$this->news->select($page,$keywords);
//var_dump($list."1");die;
}
}else{
$mem->set($keywords,1);
$count=$this->news->num($keywords);
$list=$this->news->select($page,$keywords);
//var_dump($list."0");die;
}
}else{
$keywords='';
$count=$this->news->total_num($keywords);
$list=$this->news->select($page,$keywords);
}
//分页
$pages=ceil($count/$lengh);
$prev=$page<=1?1:$page-1;
$next=$page>=$pages?$pages:$page+1;
$url=base_url()."Welcome/news_list";
$links='<a href="'.$url.'/1.html?keywords='.$keywords.'">首页</a><a href="'.$url.'/'.$prev.'.html?keywords='.$keywords.'">上一页</a><a href="'.$url.'/'.$next.'.html?keywords='.$keywords.'">下一页</a><a href="'.$url.'/'.$pages.'.html?keywords='.$keywords.'">尾页</a>';
$this->load->vars('list',$list);
$this->load->vars('keywords',$keywords);
$this->load->vars('page',$links);
$this->load->view("list.html");
}
//详情展示
public function news(){
//$id=$_GET['id'];
$id = $this->uri->segment(3,1);
$re=$this->db->where("id=$id")->get('news')->row_array();
$str=file_get_contents("application/cache/".$re['action']);
echo "yes".$str;
}
//防盗链
public function error(){
header("content-type:text/html;charset=utf8");
$str=file_get_contents("http://hao.360.cn/?360sd");
//$str=iconv("GBK", "utf8", $str);
$this->load->vars('str',$str);
$this->load->view('error.html');
}
}