在采集以及展示数据用到
1.addslashes()和stripslashes()
//addslashes() 函数返回在预定义字符之前添加反斜杠的字符串。
//stripslashes() 函数删除由 addslashes() 函数添加的反斜杠。
//addslashes()与addcslashes()函数的区别:
这是两个写法非常相近但是使用有所区别的函数,addslashes() 函数返回在预定义字符之前添加反斜杠的字符串,而addcslashes() 函数返回在 指定字符前添加反斜杠的字符串,因此addcslashes() 函数需要添加附加参数说明需要添加反斜杠的具体字符。
注意 : 在往 MySQL 存入数据时 文本内容里面的字符比较复杂, 处理后与 自己写的PHP代码 区分; 以及在在展示时 需要反处理;2.htmlspecialchars()和htmlspecialchars_decode()
// htmlspecialchars() 函数把预定义的字符转换为 HTML 实体。
//htmlspecialchars_decode() 函数把预定义的 HTML 实体转换为字符。
注意: 博客数据 有很多需要转码: 不然的或 PHP获取不到;
下面: 分享下采集出库时的PHP代码 :
<?php
header('content-type:text/html; charset=UTF-8');
//获取地址以及数据
$url="https://blog.youkuaiyun.com/zph1234/rss/list";
$data=file_get_contents($url);
//PHP正则
$preg='#<item>(.*)</item>#isU';
$preg1='#<title>(.*)</title>#isU';
$preg2='#<link>(.*)</link>#isU';
$preg3='#<author>(.*)</author>#isU';
$preg4='#<pubDate>(.*)</pubDate>#isU';
$preg5='#<description>(.*)</description>#isU';
$preg6='#阅读:([1-9]\d*+).*</description>#isU';
//获悉入库的数据整理
preg_match_all($preg,$data,$result);
//print_r($result[0]);exit;
foreach($result[1] as $k=>$v){
preg_match($preg1,$v,$title);
$data2[$k]['title']=htmlspecialchars($title[1]);
preg_match($preg2,$v,$link);
$data2[$k]['link']=$link[1];
preg_match($preg3,$v,$author);
$data2[$k]['author']=$author[1];
preg_match($preg4,$v,$date);
$data2[$k]['date']=$date[1];
preg_match($preg5,$v,$count);
$data2[$k]['count']=addslashes( htmlspecialchars($count[1]) );
preg_match($preg6,$v,$num);
$data2[$k]['num']=$num[1];
}
//链接数据库
$con=mysqli_connect('127.0.0.1','root','root','week')or die(mysqli_error());
//处理sql语句;
$str='';
foreach($data2 as $key=>$va){
$str = "('".$va['title']."','".$va['link']."','".$va['author']."','".$va['date']."','".$va['num']."','".$va['count'] ."')";
$sql="insert into blog(`title`,`link`,`author`,`ctime`,`num`,`count`) values $str";
$res=mysqli_query($con,$sql);
}
注意: 入库时采用循环入库 ; 如果处理好数据一次性入库的话; 数据过大 ;