php 采集文件,php file_get_contents()读取采集远程文件内容_PHP教程

我们来看php手册讲述关于file_get_contents() 函数把整个文件读入一个字符串中和 file() 一样,不同的是 file_get_contents() 把文件读入一个字符串。

file_get_contents() 函数是用于将文件的内容读入到一个字符串中的首选方法

上面是帮助手册的是一次性把内容全部读入内存了,后面的实例我们也会讲到

_get_contents可以将远程文件读入为一个字符串,

而文件行的分隔就是”rn”

explode将字符串按”rn”分隔

代码如下

复制代码

$shadu_url = "http://localhost/demo.html";

$shadu_str = file_get_contents($shadu_url);

$line_arr = explode("rn",$shadu_str);

远程请求地址,返回的处理结果信息为字符串,各字段以‘|’隔开,行与行用‘rn’隔开

分别返回内容为,id,name,time,email

内容示例

1|simaopig|2009-04-01|demo@simaopig.com

2|xiaoxiaozi|2009-04-02|demo@xiaoxiaozi.com

如我想要获得每个字段操作如下

代码如下

复制代码

$shadu_url = "http://localhost/demo.html";

$shadu_str = file_get_contents($shadu_url);

$line_arr = explode("rn",$shadu_str);

$result = array();

if(empty($line_arr))

{

return array();

}

foreach($line_arr as $line_str)

{

$record_arr = explode("|",$line_str);

if($record_arr[0] == "-1")

{

// log

continue;

}

$data = array();

$data['id'] = $record_arr[0];

$data['name'] = $record_arr[1];

$data['time'] = $record_arr[2];

$data['email'] = $record_arr[3];

$result[] = $data;

}

var_dump($result);

结果自己查看吧,哈哈。

实例2

采集html页面的内容

代码如下

复制代码

全国主要城市、县当天和未来五天天气趋势预报在线查询(.*?)/si";

//正则匹配之间的html

preg_match($pattern,$html,$pg);

echo "";

//正则替换远程地址为本地地址

$p=preg_replace('//weather/(w+)/index.htm/', 'tq.php/$1.html', $pg[1]);

echo $p;

}

//省,判断条件是$REQUEST_URI是否含有?

else if(!strpos($_SERVER["REQUEST_URI"],"?")){

//yoyo推荐的使用分割获得数据,这里是获得省份名称

$province=explode("/",$_SERVER["REQUEST_URI"]);

$province=explode(".",$province[count($province)-1]);

$province=$province[0];

//被注释掉的是我自己写出来的正则,感觉写的不好,但效果等同上面

//preg_match('/[^/]+[.(html)]$/',$_SERVER["REQUEST_URI"],$pro);

//$province=preg_replace('/.html/','',$pro[0]);

$page="http://qq.ip138.com/weather/".$province."/index.htm";

//获取html数据之前先尝试打开页面,防止恶意输入地址导致出错

if (!@fopen($page, "r")) {

die("对不起,该地址不存在!点击这里返回");

exit(0);

}

$html = file_get_contents($page,'r');

$pattern="/五天天气趋势预报(.*?)请输入输入市/si";

preg_match($pattern,$html,$pg);

echo "";

//正则替换,获取省份,城市

$p=preg_replace('//weather/(w+)/(w+).htm/', '$2.html?pro=$1', $pg[1]);

echo $p;

}

else {

//市,通过get传递省份

$pro=$_REQUEST['pro'];

$city=explode("/",$_SERVER["REQUEST_URI"]);

$city=explode(".",$city[count($city)-1]);

$city=$city[0];

//preg_match('/[^/]+[.(html)]+[?]/',$_SERVER["REQUEST_URI"],$cit);

//$city=preg_replace('/.html?/','',$cit[0]);

$page="http://qq.ip138.com/weather/".$pro."/".$city.".htm";

if (!@fopen($page, "r")) {

die("对不起,该地址不存在!点击这里返回");

exit(0);

}

$html = file_get_contents($page,'r');

$pattern="/五天天气趋势预报(.*?)请输入输入市/si";

preg_match($pattern,$html,$pg);

echo "";

//获取真实的图片地址

$p=preg_replace('//image//', 'http://qq.ip138.com/image/', $pg[1]);

echo $p;

}

?>

http://www.bkjia.com/PHPjc/629097.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/629097.htmlTechArticle我们来看php手册讲述关于file_get_contents() 函数把整个文件读入一个字符串中和 file() 一样,不同的是 file_get_contents() 把文件读入一个字符串。...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值