PHP file_get_contents与file_put_contents
1、file_get_contents — 将整个文件读入一个字符串
1)、语法:string file_get_contents ( string $filename [, bool $use_include_path = false [, resource $context [, int $offset = -1 [, int $maxlen ]]]] )
Note:如果要打开有特殊字符的 URL (比如说有空格),就需要使用 urlencode() 进行 URL 编码。
2)、参数说明:
参数 说明
filename 要读取的文件的名称。
use_include_path 可选。如果也想在 include_path 中搜寻文件的话,可以将该参数设为 "1"。
context 可选。规定文件句柄的环境。(若使用 null,则忽略)
offset 可选。规定在文件中开始读取的位置。该参数是 PHP 5.1 新加的。
maxlen 可选。规定读取的字节数。该参数是 PHP 5.1 新加的。
3)、代码
(1)、输出url内容
$home_content = file_get_contents('http://weather.123.duba.net/static/weather_info/101121301.html');
echo $home_content;
(2)、输出文件内容
$file = file_get_contents(APP_PATH.'/data/css1.txt', true);
$file1 = file_get_contents(APP_PATH.'/data/css1.txt', FILE_USE_INCLUDE_PATH);
(3)、截取文件内容
$file = file_get_contents(APP_PATH.'/data/css1.txt', NULL, NULL, 10, 14);
注意:文件中有中文时会出现乱码
(4)、模拟POST请求数据
//'http://localhost/test/wps';
public function wpsAction(){
$url = 'http://localhost/test/abcd';
$postData = [
'username'=>'你好',
'password'=>'123456'
];
$context = stream_context_create(
['http' => [
'method' => 'POST',
'header' => "Content-type: application/x-www-form-urlencoded",
'content' => http_build_query($postData),
'timeout' => 20
]
]
);
$data = file_get_contents($url, false, $context);
var_export($data);die;
}
public function abcdAction(){
$username = $_POST['username'];
$pwd = $_POST['password'];
echo $username.' '.$pwd;
die;
}
打印:
你好 123456
2、file_put_contents — 将一个字符串写入文件
1)、语法:int file_put_contents ( string $filename , mixed $data [, int $flags = 0 [, resource $context ]] )
和依次调用 fopen(),fwrite() 以及 fclose() 功能一样。
2)、参数说明:
参数 说明
filename 要被写入数据的文件名。(路径+文件名)
data 要写入的数据。类型可以是 string,array 或者是 stream 资源
如果 data 指定为 stream 资源,这里 stream 中所保存的缓存数据将被写入到指定文件中,这种用法就相似于使用 stream_copy_to_stream() 函数。
参数 data 可以是数组(但不能为多维数组),这就相当于 file_put_contents($filename, join('', $array))。
flags flags 的值可以是 以下 flag 使用 OR (|) 运算符进行的组合。
Flag 描述
FILE_USE_INCLUDE_PATH 在 include 目录里搜索 filename。 更多信息可参见 include_path。
FILE_APPEND 如果文件 filename 已经存在,追加数据而不是覆盖。
LOCK_EX 在写入时获得一个独占锁。
context 一个 context 资源。
3)、返回:
该函数将返回写入到文件内数据的字节数,失败时返回FALSE
4)、使用:
public function addlog(){
$filePath = APP_PATH."/data/test/";
$this->createDirectory($filePath); //递归创建目录
$fileName = $filePath."abc.txt";
//file_put_contents($fileName, date('Ymd H:i:s')."\r\nSUCCESS\r\n", FILE_APPEND | LOCK_EX);
file_put_contents($fileName, date('Ymd H:i:s').PHP_EOL."SUCCESS".PHP_EOL, FILE_APPEND OR LOCK_EX);
}
//递归创建目录,并给最大权限 777
public function createDirectory( $dir ){
return is_dir ( $dir ) or $this->createDirectory(dirname( $dir )) and mkdir ( $dir , 0777);
}