PHP中怎样实现文章采集
eregi(''^[[:alnum:]]'',$regs[1])){ $regs[1]=$rootpath.$regs[1]; }
else{ $regs[1] = eregi_replace("^[\/]",'''',$regs[1]); $regs[1]=$rootpath.$regs[1]; } } } $line = $regs[2]; if(eregi(''(.)*[\.](htm|shtm|html|asp|aspx|php|jsp|cgi)(.)*'',$regs[1])){ $out[0][]=$regs[1]; } } } }for ($ouou=0;$ouou { if($out[0][$ouou]==$out[0][$ouou+1]){ $sameurlsum=1; //echo "sameurlsum=1:"; for($sameurl=1;$sameurl if($out[0][$ouou+$sameurl]==$out[0][$ouou+$sameurl+1]){$sameurlsum++;} else{break;} } for($p=$ouou;$p { $out[0][$p]=$out[0][$p+$sameurlsum];} } } $i=0; while($out[0][++$i]) { //echo $root.$out[0][$i]."\r\n"; $outed[0][$i]=$out[0][$i]; } unset($out); $out=$outed; return $out; } ?> 上面的东西只能zend,不然有碍市容:( 得到所有唯一的连接后,放到数组 2)需要填正则的处理 如果要准确地获得需要的文章连接,就用这个办法 按照ketle的思路 用 PHP: -------------------------------------------------------------------------------- function cut($file,$from,$end){ $message=explode($from,$file); $message=explode($end,$message[1]); return $message[0]; } $from是列表前面的html代码 $end是列表后面的html代码 以上可以通过表单提交参数. 对列表页面不是列表的部分去除,剩下的是需要的连接, 只要再通过下面正则得到: PHP: -------------------------------------------------------------------------------- preg_match("/^(http:\/\/)?(.*)/i", $url, $matches); return $matches[2]; 2,获得:标题,内容 a首先,利用得到的文章路径,读取目标路径 可以通过以下函数: PHP: -------------------------------------------------------------------------------- function getcontent($url) { if($handle = fopen ($url, "rb")){ $contents = ""; do { $data = fread($handle, 2048); if (strlen($data) == 0) { break; } $contents .= $data; } while(true); fclose ($handle); } else exit("........"); return $contents; } 或者直接 PHP: -------------------------------------------------------------------------------- file_get_contents($urls); 后者比较方便,但是缺点对比上面的就知道. b,接下来得到标题: 一般用这个实现: PHP: -------------------------------------------------------------------------------- preg_match("||",$allcontent,$title); 里面的部分通过提交表单得到. 也可以通过一系列的cut函数 比如上面提过的function cut($file,$from,$end),具体的字符串切割可以通过字符处理函数切割实现,后面"取得内容"详细讲. c,取得内容 取得内容方面和取得标题思路一样但情况比较复杂,因为内容附近不会是这么简单. 1)内容附近的特征字符串有双引号,空格,换行符号等是大障碍 双引号需要变成 \" 可以通过addslashes()处理 换行符号要去掉 可以通过 PHP: ----------------------------------------------------------------- |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |