<?php header("content-type:text/html;charset=utf8");//编码 $url = "https://blog.csdn.net/zph1234/rss/list";//路径(网上路径) $html = file_get_contents($url);//利用file_get_contents采集 $yy = '#<item>(.*)</item>#isU';//采集的正则(所有内容) preg_match_all($yy,$html, $html2);//正则匹配 $html3 = []; foreach($html2 as $k=>$v){//处理数组让三维数组变二维 $html3 = $v; } $b = '#<title>(.*)</title>#isU';//采集的正则(标题) $b1 = '#<description>(.*)</description>#isU';//采集的正则(内容) $b2 = '#<pubDate>(.*)</pubDate>#isU';//采集的正则(日期) $b3 = '#阅读:([1-9]\d*+).*</description>#isU';//采集的正则(阅读量) $b4 = '#<link>(.*)</link>#isU';//采集的正则(原文链接) $b5 = '#<author>(.*)</author>#isU';//采集的正则(作者名) $arr = []; foreach($html3 as $k=>$v){//处理数组 preg_match($b, $v,$n); $arr['b_tilte'][] = addslashes( htmlspecialchars($n['1']));//匹配正则数据(标题) preg_match($b1, $v, $n1); $arr['b_content'][] = addslashes( htmlspecialchars($n1['1']));//匹配这则数据(内容) preg_match($b2, $v, $n2); $arr['b_time'][] = $n2['1'];//匹配正则数据(时间) preg_match($b3, $v, $n3); $arr['b_number'][] = $n3['1'];//匹配正则数据(阅读量) preg_match($b4, $v, $n4); $arr['b_url'][] = $n4['1'];//匹配正则数据(原文地址) preg_match($b5, $v, $n5); $arr['b_author'][] = addslashes( htmlspecialchars($n5['1']));//匹配正则数据(正则) } $data = []; foreach($arr as $k=>$v){//处理数组 foreach($v as $key=>$val){ $data[$key][$k] = $val; } }//利用MySQL的原生语句循环添加到数据库 $con = mysqli_connect('127.0.0.1','root','root','book'); $con->set_charset('utf8'); foreach($data as $k=>$v){ $sql = "insert into csdn (b_tilte,b_content,b_number,b_author,b_url,b_time) values ('$v[b_tilte]','$v[b_content]','$v[b_number]','$v[b_author]','$v[b_url]','$v[b_time]')"; mysqli_query($con,$sql); } $u = mysqli_affected_rows($con);//查看数据库影响行数 if($u){//判断是否添加成功 echo "添加成功"; }else{ echo "添加失败"; } ?>
PHP addslashes() 函数
在每个双引号(")前添加反斜杠:
PHP htmlspecialchars() 函数
把预定义的字符 "<" (小于)和 ">" (大于)转换为 HTML 实体: