Home  >  Article  >  Backend Development  >  php file_get_contents() reads and collects remote file contents_PHP tutorial

php file_get_contents() reads and collects remote file contents_PHP tutorial

WBOY
WBOYOriginal
2016-07-13 17:13:591032browse

Let’s look at the PHP manual about the file_get_contents() function that reads the entire file into a string. It is the same as file(). The difference is that file_get_contents() reads the file into a string.

The file_get_contents() function is the preferred method for reading the contents of a file into a string

The above is a help manual that reads all the contents into the memory at one time. We will also talk about the following examples

_get_contents can read the remote file into a string,
The file line separation is "rn"
explode separates strings by "rn"

The code is as follows Copy code
$shadu_url = "http://localhost/ demo.html";
 代码如下 复制代码
$shadu_url = "http://localhost/demo.html";
$shadu_str = file_get_contents($shadu_url);
$line_arr  = explode("rn",$shadu_str);
$shadu_str = file_get_contents($shadu_url);

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


Remote request address, the returned processing result information is a string, each field is separated by ‘|’, and rows are separated by ‘rn’ The content returned respectively is, id, name, time, email



Content example
1|simaopig|2009-04-01|demo@simaopig.com
2|xiaoxiaozi|2009-04-02|demo@xiaoxiaozi.com

If I want to get each field, do the following
 代码如下 复制代码
$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);
The code is as follows Copy code
$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);

Check the results yourself, haha.

Example 2

Collect the content of html page

 代码如下 复制代码
//全国,判断条件是$REQUEST_URI是否含有html
if (!strpos($_SERVER["REQUEST_URI"],".html"))
{
$page="http://qq.ip138.com/weather/";
$html = file_get_contents($page,'r');
$pattern="/全国主要城市、县当天和未来五天天气趋势预报在线查询(.*?)
/si";
//正则匹配之间的html
preg_match($pattern,$html,$pg);
echo "";
//正则替换远程地址为本地地址
$p=preg_replace('//weather/(w+)/index.htm/', 'tq.php/.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/', '.html?pro=', $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;
}
?>

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/629097.htmlTechArticleLet’s look at the PHP manual about the file_get_contents() function that reads the entire file into a string and file() The same, except that file_get_contents() reads the file into a string. ...
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn