php168 的采集规则的改动
时间:2010-09-05 来源:中级程序员
最近想搞个cms网站,也是在几个网站做了比较.比较比较去,还是选择了php168,因为这个代码有注释,能看清楚里面写的东西.
大家都知道,做cms最关键是内容,所以采集是比较重要的.但php168的采集规则,经过它的处理,不是很好.很多内容根本采集不了.于是就把它规则换了算了.让他做成php默认规则,经过几个小时的测试调试终于通关了.现在我说一下大体步骤.
1。标题采集规则(找到代码 admin/gather.php)
$rsdb[title_rule]=clean_blank($rsdb[title_rule]);
$code=clean_blank($code);
//获取正则里的规则数组
// preg_match_all("/\{(.*?)\}/is",$rsdb[title_rule],$array);
//
// //获取变量
// foreach( $array[1] AS $key=>$value){
// if( !ereg("^NO",$value)&&!ereg("^\*",$value) ){
// $detail=explode("=",$value);
// $ruledb[++$key]=$detail[0];
// }
// }
//echo $rsdb[title_rule]."<br>";
// 获取处理后能使用的规则
//$rule = get_rule($rsdb[title_rule]);
// exit($rule);
//jake
$rule= $rsdb[title_rule];
把前面的注释了,然后改为直接读取规则,就可以了.上面的代码大概在500行左右.
接着对采集后的数据进行处理
//获取有用的数组
// foreach( $ruledb AS $key=>$value){
// foreach( $array2[$key] AS $key2=>$value2){
// $listdb[$value][]=$value2;
// }
// }
//
//jake
$url_list=array();
$title_list=array();
for($i=0;$i<$title_num;$i++)
{
//$listdb[$array2[1][$i]]=$array2[2][$i];
$url_list[]=$array2[1][$i];
$title_list[]=$array2[2][$i];
}
$listdb[url]=$url_list;
$listdb[title]=$title_list;
红色部分为新加的内容,注释的为以前代码,就这几步便可以把php168标题的采集规则 改变了
2。内容采集规则改变.同样是改 admin/gather.php 文件(在850行).
//把空白都去除,方便处理
// $rsdb[content_rule]=clean_blank($rsdb[content_rule]);
// $show_content=clean_blank($show_content);
//
// //获取正则里的规则数组
// preg_match_all("/\{(.*?)\}/is",$rsdb[content_rule],$array);
//
// //获取变量
// foreach( $array[1] AS $key=>$value){
// if( !ereg("^NO",$value)&&!ereg("^\*",$value) ){
// $detail=explode("=",$value);
// $ruledb[++$key]=$detail[0];
// }
// }
//
// //获取处理后能使用的规则
// $rule = get_rule($rsdb[content_rule]);
//jake
$rule=$rsdb[content_rule];
上面是对采集规则的处理
下面是对采集后的数组处理
//对采集的内容跟据正则进行校正
preg_match_all("/$rule/is",$show_content,$array2);
//获取有用的数组
// foreach( $ruledb AS $key=>$value){
// foreach( $array2[$key] AS $key2=>$value2){
// $listdb[$value][]=$value2;
// }
// }
//
// //把用户自定义的变量都取出来
// foreach( $listdb AS $key=>$value){
// $$key=$value[0];
// $gather_module_valeDB[$key]=$value[0]; //为其它模型字段采集做处理
// }
//jake
$content=$array2[1][0];
同理,红色表示对是我对新内容的添加
就这么简单,我们就可以实现对php168采集规则改为php的规则,这样对于我们程序员说就有更大发挥空间,而不会出现老是采集不了内容的尴尬局面了.