<?php class CjRenwuResultController extends Controller { /** * @var string the default layout for the views. Defaults to '//layouts/column2', meaning * using two-column layout. See 'protected/views/layouts/column2.php'. */ public $layout='//layouts/lv_column2'; /** * @return array action filters */ public function filters() { return array( 'accessControl', // perform access control for CRUD operations 'postOnly + delete', // we only allow deletion via POST request ); } /** * Specifies the access control rules. * This method is used by the 'accessControl' filter. * @return array access control rules */ public function accessRules() { return array( array('allow', // allow authenticated user to perform 'create' and 'update' actions 'actions'=>array('create','update','admin','delete'), 'users'=>array('@'), ), array('deny', // deny all users 'users'=>array('*'), ), ); } /** * Displays a particular model. * @param integer $id the ID of the model to be displayed */ public function actionView($id) { $this->render('view',array( 'model'=>$this->loadModel($id), )); } /** * Creates a new model. * If creation is successful, the browser will be redirected to the 'view' page. */ public function actionCreate() { $model=new CjRenwuResult; // Uncomment the following line if AJAX validation is needed // $this->performAjaxValidation($model); if(isset($_POST['CjRenwuResult'])) { $model->attributes=$_POST['CjRenwuResult']; if($model->save()) $this->redirect(array('view','id'=>$model->id)); } $this->render('create',array( 'model'=>$model, )); } /** * Updates a particular model. * If update is successful, the browser will be redirected to the 'view' page. * @param integer $id the ID of the model to be updated */ public function actionUpdate($id) { $model=$this->loadModel($id); // Uncomment the following line if AJAX validation is needed // $this->performAjaxValidation($model); if(isset($_POST['CjRenwuResult'])) { $model->attributes=$_POST['CjRenwuResult']; if($model->save()) $this->redirect(array('view','id'=>$model->id)); } $this->render('update',array( 'model'=>$model, )); } /** * Deletes a particular model. * If deletion is successful, the browser will be redirected to the 'admin' page. * @param integer $id the ID of the model to be deleted */ public function actionDelete($id) { $this->loadModel($id)->delete(); // if AJAX request (triggered by deletion via admin grid view), we should not redirect the browser if(!isset($_GET['ajax'])) $this->redirect(isset($_POST['returnUrl']) ? $_POST['returnUrl'] : array('admin')); } /** * Lists all models. */ public function actionIndex() { $dataProvider=new CActiveDataProvider('CjRenwuResult'); $this->render('index',array( 'dataProvider'=>$dataProvider, )); } /** * Manages all models. */ public function actionAdmin() { $model=new CjRenwuResult('search'); $model->unsetAttributes(); // clear any default values if(isset($_GET['CjRenwuResult'])) $model->attributes=$_GET['CjRenwuResult']; $this->render('admin',array( 'model'=>$model, )); } /** * Returns the data model based on the primary key given in the GET variable. * If the data model is not found, an HTTP exception will be raised. * @param integer $id the ID of the model to be loaded * @return CjRenwuResult the loaded model * @throws CHttpException */ public function loadModel($id) { $model=CjRenwuResult::model()->findByPk($id); if($model===null) throw new CHttpException(404,'The requested page does not exist.'); return $model; } /** * Performs the AJAX validation. * @param CjRenwuResult $model the model to be validated */ protected function performAjaxValidation($model) { if(isset($_POST['ajax']) && $_POST['ajax']==='cj-renwu-result-form') { echo CActiveForm::validate($model); Yii::app()->end(); } } }
控制器分4个文件
CjRenwuController.php
<?php class CjRenwuController extends Controller { public $layout='//layouts/lv_column2'; public function filters() { return array( 'accessControl', // perform access control for CRUD operations 'postOnly + delete', // we only allow deletion via POST request ); } public function accessRules() { return array( array('allow', // allow all users to perform 'index' and 'view' actions 'actions'=>array('index','view'), 'users'=>array('*'), ), array('allow', // allow authenticated user to perform 'create' and 'update' actions 'actions'=>array('create','update','admin','getyuanma'), 'users'=>array('@'), ), array('allow', // allow admin user to perform 'admin' and 'delete' actions 'actions'=>array('delete'), 'users'=>array('admin'), ), array('deny', // deny all users 'users'=>array('*'), ), ); } public function actionGetyuanma() { $this->layout='//layouts/lv_getyuanma'; /**获取源码测试**/ error_reporting(0); set_time_limit(0); if(isset($_POST)) { $url=$_POST["url"]; $bianma=$_POST["bianma"]; if($bianma=='GB2312') $neirong=iconv("GB2312","UTF-8//IGNORE",file_get_contents($url)); else $neirong=file_get_contents($url); }else{ $neirong=''; } $this->render('getyuanma',array( 'neirong'=>$neirong, )); } public function actionView($id) { $this->render('view',array( 'model'=>$this->loadModel($id), )); } public function actionCreate() { $model=new CjRenwu; if(isset($_POST['CjRenwu'])) { $model->attributes=$_POST['CjRenwu']; if($model->save()) $this->redirect(array('admin')); } $this->render('create',array( 'model'=>$model, )); } public function actionUpdate($id) { $model=$this->loadModel($id); if(isset($_POST["ceshi"]) && $_POST["ceshi"]==1) { $url=$_POST['CjRenwu']['url']; $url2=$_POST['CjRenwu']['url2']; $url2_start= $_POST['CjRenwu']['url2_start']; $url2_end= $_POST['CjRenwu']['url2_end']; $start=$_POST['CjRenwu']['start']; //超链接区域 开始标示 $end=$_POST['CjRenwu']['end']; //超链接区域 结束标示 $tiquguize=$_POST['CjRenwu']['tiquguize']; //内容超链接匹配规则 $dijige=$_POST['CjRenwu']['dijige']; //第几个(.*)是链接url $urlqianzhui=$_POST['CjRenwu']['urlqianzhui']; //URL前缀 $bianma=$_POST['CjRenwu']['bianma']; //确定编码 $arr_url=explode(" ",$url); $arr_url2=array(); for($k=$url2_start;$k<=$url2_end;$k++) { array_push($arr_url2,str_replace('{xxq}',$k,$url2)); } if($url=='') { $arr_url3=$arr_url2; }else if($url2==''){ $arr_url3=$arr_url; }else{ $arr_url3=array_merge($arr_url,$arr_url2); } echo '<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />'; foreach ($arr_url3 as $key => $value) { //循环列表页 开始 $url_now=$value; echo "<br>"; echo "<font color=red>正在分析列表页:</font>".$url_now; echo "<br>"; /*********************** 开始 采集URL ****************************/ if($bianma=='gb2312') $contents=iconv("gb2312","utf-8//IGNORE",file_get_contents($url_now)); else $contents=file_get_contents($url_now); $geshi='/'.$start.'(.*?)'.$end.'/is'; //超链接区域 匹配格式 preg_match_all($geshi,$contents,$pipei); //开始匹配 超链接区域 $zxcontent=$pipei[0][0]; //获得 超链接区域内容(唯一) $geshi2='/'.$tiquguize.'/is'; //内容超链接url 匹配格式 preg_match_all($geshi2,$zxcontent,$pipei2); //开始匹配 内容超链接url $num=count($pipei2[0]);// 获取内容超链接url的数量 $zxlink=array();//将URL结果集 保存到数组中 for($j=0;$j<$num;$j++) { array_push($zxlink,$pipei2[$dijige][$j]); } /*********************** 结束 采集URL ****************************/ /*********************** 开始 显示URL ****************************/ for($p=0;$p<count($zxlink);$p++) { $thisurl=$urlqianzhui.$zxlink[$p]; echo "<br>"; echo "得到的内容页地址是:".$thisurl; } //循环列表页 结束 } }else{ if(isset($_POST['CjRenwu'])) { $model->attributes=$_POST['CjRenwu']; if($model->save()) $this->redirect(array('update','id'=>$model->id)); } $this->render('update',array( 'model'=>$model, )); } } public function actionDelete($id) { $this->loadModel($id)->delete(); // if AJAX request (triggered by deletion via admin grid view), we should not redirect the browser if(!isset($_GET['ajax'])) $this->redirect(isset($_POST['returnUrl']) ? $_POST['returnUrl'] : array('admin')); } /** * Lists all models. */ public function actionIndex() { $dataProvider=new CActiveDataProvider('CjRenwu'); $this->render('index',array( 'dataProvider'=>$dataProvider, )); } /** * Manages all models. */ public function actionAdmin() { $model=new CjRenwu('search'); $model->unsetAttributes(); // clear any default values if(isset($_GET['CjRenwu'])) $model->attributes=$_GET['CjRenwu']; $this->render('admin',array( 'model'=>$model, )); } /** * Returns the data model based on the primary key given in the GET variable. * If the data model is not found, an HTTP exception will be raised. * @param integer $id the ID of the model to be loaded * @return CjRenwu the loaded model * @throws CHttpException */ public function loadModel($id) { $model=CjRenwu::model()->findByPk($id); if($model===null) throw new CHttpException(404,'The requested page does not exist.'); return $model; } /** * Performs the AJAX validation. * @param CjRenwu $model the model to be validated */ protected function performAjaxValidation($model) { if(isset($_POST['ajax']) && $_POST['ajax']==='cj-renwu-form') { echo CActiveForm::validate($model); Yii::app()->end(); } } }
CjRenwuResultController.php
核心文件CjContentController.php
<?php class CjCenterController extends Controller { public $layout='//layouts/lv_column2'; public function filters() { return array( 'accessControl', // perform access control for CRUD operations 'postOnly + delete', // we only allow deletion via POST request ); } public function accessRules() { return array( array('allow', 'actions'=>array('index','geturl','tiquruku','deleteurl','deleteku','ceshi'), 'users'=>array('@'), ), array('deny', // deny all users 'users'=>array('*'), ), ); } public function actionIndex() { $CjRenwu_model=new CjRenwu; $criteria=new CDbCriteria(); $criteria->order='id desc'; $data_renwu=$CjRenwu_model->findAll($criteria); $this->render('index',array( 'data_renwu'=>$data_renwu, )); } public function actionGeturl($renwu_id) { $model=$this->loadModel_renwu($renwu_id); $url=$model->url; $url2=$model->url2; $url2_start=$model->url2_start; $url2_end=$model->url2_end; $start=$model->start; //超链接区域 开始标示 $end=$model->end; //超链接区域 结束标示 $tiquguize=$model->tiquguize; //内容超链接匹配规则 $dijige=$model->dijige; //第几个(.*)是链接url $urlqianzhui=$model->urlqianzhui; //URL前缀 $bianma=$model->bianma; //确定编码 $arr_url=explode(" ",$url); $arr_url2=array(); for($k=$url2_start;$k<=$url2_end;$k++) { array_push($arr_url2,str_replace('{xxq}',$k,$url2)); } if($url=='') { $arr_url3=$arr_url2; }else if($url2==''){ $arr_url3=$arr_url; }else{ $arr_url3=array_merge($arr_url,$arr_url2); } foreach ($arr_url3 as $key => $value) { //循环列表页 开始 if($value=='') { die('采集地址为空!'); } $url_now=$value; //echo "<font color=red>正在分析列表页:</font>".$url_now; //echo "<br>"; /*********************** 开始 采集URL ****************************/ if($bianma=='gb2312') $contents=iconv("gb2312","utf-8//IGNORE",file_get_contents($url_now)); else $contents=file_get_contents($url_now); $geshi='/'.$start.'(.*?)'.$end.'/is'; //超链接区域 匹配格式 preg_match_all($geshi,$contents,$pipei); //开始匹配 超链接区域 $zxcontent=$pipei[0][0]; //获得 超链接区域内容(唯一) $geshi2='/'.$tiquguize.'/is'; //内容超链接url 匹配格式 preg_match_all($geshi2,$zxcontent,$pipei2); //开始匹配 内容超链接url $num=count($pipei2[0]);// 获取内容超链接url的数量 $zxlink=array();//将URL结果集 保存到数组中 for($j=0;$j<$num;$j++) { array_push($zxlink,$pipei2[$dijige][$j]); } /*********************** 结束 采集URL ****************************/ /*********************** 开始 显示URL ****************************/ for($p=0;$p<count($zxlink);$p++) { $thisurl=$urlqianzhui.$zxlink[$p]; //echo "<br>"; //echo "得到的内容页地址是:".$thisurl; $model2=new CjRenwuUrl; $model2->url=$thisurl; $model2->renwu_id=$renwu_id; $model2->bianma=$bianma; $model2->inputtime=time(); $model2->inputtime2=date('H:i Y-m-d',time()); $model2->save(); } if($key==(count($arr_url3)-1)) $this->redirect(array('CjCenter/index')); //循环列表页 结束 } } public function actionDeleteurl($renwu_id) { $CjRenwuUrl_model=new CjRenwuUrl; $criteria=new CDbCriteria(); $criteria->condition="t.renwu_id='".$renwu_id."'"; $criteria->order='id desc'; $data_CjRenwuUrl=$CjRenwuUrl_model->findAll($criteria); if(count($data_CjRenwuUrl)==0) $this->redirect(array('CjCenter/index')); foreach ($data_CjRenwuUrl as $key => $value) { $this->loadModel_renwuurl($value->id)->delete(); if($key==(count($data_CjRenwuUrl)-1)) $this->redirect(array('CjCenter/index')); } } public function actionTiquruku($renwu_id) { $model=$this->loadModel_renwu($renwu_id); $bianma=$model->bianma; /*查询标签 开始*/ $CjRenwuBiaoqian_model=new CjRenwuBiaoqian; $criteria=new CDbCriteria(); $criteria->condition="t.renwu_id='".$renwu_id."'"; $criteria->order='id desc'; $data_CjRenwuBiaoqian=$CjRenwuBiaoqian_model->findAll($criteria); /*查询标签 结束*/ /*查询URL 开始*/ $CjRenwuUrl_model=new CjRenwuUrl; $criteria=new CDbCriteria(); $criteria->condition="t.renwu_id='".$renwu_id."' and t.caileme=0"; $criteria->order='id desc'; $data_CjRenwuUrl=$CjRenwuUrl_model->findAll($criteria); /*查询URL 结束*/ foreach ($data_CjRenwuUrl as $kk => $data) { //循环每一个文章URL 开始 $url_now=$data->url; //正在处理的URL $arr_result_tiqu=array(); //储备单个URL提取出来的数据 foreach ($data_CjRenwuBiaoqian as $key => $value) { $bq_name=$value->bq_name; $bq_start=$value->bq_start; $bq_end=$value->bq_end; $bq_guize=$value->bq_guize; $bq_dijige=$value->bq_dijige; $bq_tihuan=$value->bq_tihuan; if($bianma=='gb2312') $contents=iconv("gb2312","utf-8//IGNORE",file_get_contents($url_now)); else $contents=file_get_contents($url_now); $geshi='/'.$bq_start.'(.*?)'.$bq_end.'/is'; preg_match_all($geshi,$contents,$pipei); $zxcontent=$pipei[0][0]; $geshi2='/'.$bq_guize.'/is'; preg_match_all($geshi2,$zxcontent,$pipei2); $str_r=$pipei2[$bq_dijige][0]; if($bq_tihuan!=''){ $arr_bq_tihuan=explode(" ",$bq_tihuan); foreach ($arr_bq_tihuan as $key => $value) { $arr_th=explode('|', $value); $str_r=str_replace($arr_th[0], $arr_th[1], $str_r); } } array_push($arr_result_tiqu,$bq_name.':::'.trim($str_r)); } $str_result_tiqu=implode('^^^', $arr_result_tiqu); /*结果入库 开始*/ $model2=new CjRenwuResult; $model2->content=$str_result_tiqu; $model2->renwu_id=$renwu_id; $model2->url=$url_now; $model2->inputtime=time(); $model2->inputtime2=date('H:i Y-m-d',time()); $model2->save(); /*结果入库 结束*/ //修改URL为已采集 $model3=$this->loadModel_renwuurl($data->id); $model3->caileme=1; $model3->save(); if($kk==(count($data_CjRenwuUrl)-1)) $this->redirect(array('CjCenter/index')); //循环每一个文章URL 结束 } } public function actionDeleteku($renwu_id) { $CjRenwuResult_model=new CjRenwuResult; $criteria=new CDbCriteria(); $criteria->condition="t.renwu_id='".$renwu_id."'"; $criteria->order='id desc'; $data_CjRenwuResult=$CjRenwuResult_model->findAll($criteria); if(count($data_CjRenwuResult)==0) $this->redirect(array('CjCenter/index')); foreach ($data_CjRenwuResult as $key => $value) { $this->loadModel_renwuresult($value->id)->delete(); if($key==(count($data_CjRenwuResult)-1)) $this->redirect(array('CjCenter/index')); } } public function loadModel_renwu($id) { $model=CjRenwu::model()->findByPk($id); if($model===null) throw new CHttpException(404,'The requested page does not exist.'); return $model; } public function loadModel_renwuurl($id) { $model=CjRenwuUrl::model()->findByPk($id); if($model===null) throw new CHttpException(404,'The requested page does not exist.'); return $model; } public function loadModel_renwuresult($id) { $model=CjRenwuResult::model()->findByPk($id); if($model===null) throw new CHttpException(404,'The requested page does not exist.'); return $model; } public function actionCeshi(){ $this->render('ceshi'); } public function actionCeshi2(){ $bq_content='山东全省到青海全省'; $arr_city=explode('到',$bq_content); $city1=$arr_city[0]; $city2=$arr_city[1]; /*出发地区*/ if(strstr($city1,'全省')){ $city1=str_replace('全省', '', $city1); $XxqArea_model=new XxqArea; $criteria=new CDbCriteria; $criteria->condition="t.areaname like '%$city1%' and t.daima like '%00%'"; $result=$XxqArea_model->find($criteria); $areaname_sheng_from=$result->areaname; //到达省 名 $areaid_sheng_from=$result->areaid; //到达省 id $areaname_shi_from=''; //到达市 名 $areaid_shi_from=''; //到达市 id }else{ $XxqArea_model=new XxqArea; $criteria=new CDbCriteria; $criteria->condition="t.areaname like '%$city1%' and t.daima like '%00%'"; $result=$XxqArea_model->find($criteria); $areaname_shi_from=$result->areaname; //出发市 名 $areaid_shi_from=$result->areaid; //出发市 id $daima=$result->daima; $sheng_daima=substr($daima, 0,2).'0000'; $XxqArea_model=new XxqArea; $criteria=new CDbCriteria; $criteria->condition="t.daima='$sheng_daima'"; $result=$XxqArea_model->find($criteria); $areaname_sheng_from=$result->areaname; //出发省 名 $areaid_sheng_from=$result->areaid; //出发省 id } /*目的地区*/ if(strstr($city2,'全省')){ $city2=str_replace('全省', '', $city2); $XxqArea_model=new XxqArea; $criteria=new CDbCriteria; $criteria->condition="t.areaname like '%$city2%' and t.daima like '%00%'"; $result=$XxqArea_model->find($criteria); $areaname_sheng_to=$result->areaname; //到达省 名 $areaid_sheng_to=$result->areaid; //到达省 id $areaname_shi_to=''; //到达市 名 $areaid_shi_to=''; //到达市 id }else{ $XxqArea_model=new XxqArea; $criteria=new CDbCriteria; $criteria->condition="t.areaname like '%$city2%' and t.daima like '%00%'"; $result=$XxqArea_model->find($criteria); $areaname_shi_to=$result->areaname; //到达市 名 $areaid_shi_to=$result->areaid; //到达市 id $daima=$result->daima; $sheng_daima=substr($daima, 0,2).'0000'; $XxqArea_model=new XxqArea; $criteria=new CDbCriteria; $criteria->condition="t.daima='$sheng_daima'"; $result=$XxqArea_model->find($criteria); $areaname_sheng_to=$result->areaname; //到达省 名 $areaid_sheng_to=$result->areaid; //到达省 id } echo $areaname_sheng_from.'_'.$areaname_shi_from.'>>'.$areaname_sheng_to.'_'.$areaname_shi_to; echo '<br>'; echo $areaid_sheng_from.'_'.$areaid_shi_from.'>>'.$areaid_sheng_to.'_'.$areaid_shi_to; } }