文档章节

PHP解决方案@数据读写文本

RongX
 RongX
发布于 2015/07/22 19:48
字数 1266
阅读 9
收藏 0
方案解决目标: 把所需的数据写入到文本



数据写入文本

* 数据写入文本,一般有两种情况,要不就是字符串写入文本,要不就是数组(一维或者多维)写入文本
* 写入文本的方法有fwrite()和file_put_contents(),我选择后者
* 保证数据写入文本时是一个字符串,所以处理一维或者多维数组时,建议使用json格式封装数组数据,读取的时候解析json即可


// * 写入文本
$excel_json = json_encode ( $excel_data );// 写入文本时file_put_contents方法只能将一个字符串写入文件,如选择json格式

FileClass::checkDir ( AUTO_SYNC_PATH . 'rongxDemo/' ); // 检查目录是否存在                                                                       
$fileName = AUTO_SYNC_PATH . 'rongxDemo/' . "data.txt"; // 组装文件绝对路径,数据写入文本时文本的路径必须是绝对路径,不能是相对路径
                                                                                                                                               $file = file_put_contents ( $fileName, $excel_json ); // 写入数据 

file_put_contents

(PHP 5, PHP 7)

file_put_contents — 将一个字符串写入文件

说明

int  file_put_contents (  string $filename ,  mixed $data [,  int $flags  = 0 [,  resource $context ]] )

和依次调用 fopen()fwrite() 以及 fclose() 功能一样。

If filename does not exist, the file is created. Otherwise, the existing file is overwritten, unless the FILE_APPEND flag is set.

参数

filename

要被写入数据的文件名。

data

要写入的数据。类型可以是 stringarray 或者是 stream 资源(如上面所说的那样)。

如果 data 指定为 stream 资源,这里 stream 中所保存的缓存数据将被写入到指定文件中,这种用法就相似于使用stream_copy_to_stream() 函数。

参数 data 可以是数组(但不能为多维数组),这就相当于 file_put_contents($filename, join('', $array))

flags

flags 的值可以是 以下 flag 使用 OR (|) 运算符进行的组合。

Available flags
Flag 描述
FILE_USE_INCLUDE_PATH 在 include 目录里搜索 filename。 更多信息可参见 include_path
FILE_APPEND 如果文件 filename 已经存在,追加数据而不是覆盖。
LOCK_EX 在写入时获得一个独占锁。
context

一个 context 资源。

返回值

该函数将返回写入到文件内数据的字节数,失败时返回FALSE

Warning

此函数可能返回布尔值 FALSE,但也可能返回等同于 FALSE 的非布尔值。请阅读 布尔类型章节以获取更多信息。应使用 === 运算符来测试此函数的返回值。

范例

Example #1 Simple usage example

<?php
$file = 'people.txt';
// Open the file to get existing content
$current = file_get_contents($file);
// Append a new person to the file
$current .= "John Smith\n";
// Write the contents back to the file
file_put_contents($file, $current);
?>

Example #2 Using flags

<?php
$file = 'people.txt';
// The new person to add to the file
$person = "John Smith\n";
// Write the contents to the file, 
// using the FILE_APPEND flag to append the content to the end of the file
// and the LOCK_EX flag to prevent anyone else writing to the file at the same time
file_put_contents($file, $person, FILE_APPEND | LOCK_EX);
?>




文本读取数据

* 读取文本的方法有fopen()和file_get_contents(),我选择后者
* 保证路径是绝对路径
* json数据解析

// * 读取文本
FileClass::checkDir ( AUTO_SYNC_PATH . 'rongxDemo/' ); // 检查目录是否存在

$fileName = AUTO_SYNC_PATH . 'rongxDemo/' . "data.txt"; // 组装文件绝对路径,数据读取文本时文本的路径也是要求是绝对路径

if (file_exists ( $fileName )) {
    $file_data = file_get_contents ( $fileName ); // 读取文本数据
}
$file_data = json_decode ( $file_data ); // 解析json封装过的数据

file_get_contents

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

file_get_contents  将整个文件读入一个字符串

说明

string   file_get_contents  (   string $filename  [,   bool $use_include_path = false  [,   resource $context  [,   int $offset = -1  [,   int $maxlen  ]]]] )

 file() 一样,只除了 file_get_contents() 把文件读入一个字符串。将在参数 offset 所指定的位置开始读取长度为 maxlen 的内容。如果失败,file_get_contents() 将返回 FALSE

file_get_contents() 函数是用来将文件的内容读入到一个字符串中的首选方法。如果操作系统支持还会使用内存映射技术来增强性能。

Note:

如果要打开有特殊字符的 URL (比如说有空格),就需要使用 urlencode() 进行 URL 编码。

参数

filename

要读取的文件的名称。

use_include_path

Note:

As of PHP 5 the FILE_USE_INCLUDE_PATH can be used to trigger include path search.

context

A valid context resource created with stream_context_create(). 如果你不需要自定义 context,可以用 NULL 来忽略。

offset

The offset where the reading starts on the original stream.

Seeking (offset) is not supported with remote files. Attempting to seek on non-local files may work with small offsets, but this is unpredictable because it works on the buffered stream.

maxlen

Maximum length of data read. The default is to read until end of file is reached. Note that this parameter is applied to the stream processed by the filters.

返回值

The function returns the read data 或者在失败时返回 FALSE.

错误/异常

An E_WARNING level error is generated if either maxlength is less than zero, or if seeking to the specified offset in the stream fails.

范例

Example #1 Get and output the source of the homepage of a website

<?php
$homepage = file_get_contents('http://www.example.com/');
echo $homepage;
?>

Example #2 Searching within the include_path

<?php
// <= PHP 5
$file = file_get_contents('./people.txt', true);
// > PHP 5
$file = file_get_contents('./people.txt', FILE_USE_INCLUDE_PATH);
?>

Example #3 Reading a section of a file

<?php
// Read 14 characters starting from the 21st character
$section = file_get_contents('./people.txt', NULL, NULL, 20, 14);
var_dump($section);
?>

以上例程的输出类似于:

string(14) "lle Bjori Ro"

Example #4 Using stream contexts

<?php
// Create a stream
$opts = array(
  'http'=>array(
    'method'=>"GET",
    'header'=>"Accept-language: en\r\n" .
              "Cookie: foo=bar\r\n"
  )
);

$context = stream_context_create($opts);

// Open the file using the HTTP headers set above
$file = file_get_contents('http://www.example.com/', false, $context);
?>











© 著作权归作者所有

RongX
粉丝 1
博文 30
码字总数 36797
作品 0
广州
程序员
私信 提问
支持.NET和移动设备的XLS读写控件XLSReadWriteII控件介绍

XLSReadWriteII 相关文章 在Delphi中使用XlsReadWrite xlsreadwriteII对excel进行读取操作的几点提示 解决 XLSReadWriteII 解析Excel95格式的文件乱码的问题 Excel读写方案XLSReadWriteII使用...

yidongkaifa
2014/06/04
79
0
实时数据集成解决方案--XAware

XAware是一套实时数据集成解决方案。它可以通过DBMS, SOAP, HTTP/REST, text, LDAP, FTP对数据进行读写。它包含一个基于Eclipse的设计器和一个为SOA而构建的运行期环境。它内置支持数据库事务...

匿名
2008/12/05
2.9K
0
牌Exel文件xls读写和生成控件Bytescout Spreadsheet SDK for.NET

Bytescout Spreadsheet SDK for.NET能在Delphi和.NET下访问Excel文件的完美解决方案。 读写任何单元值 数字型、字符型、布尔型以及错误型。但是你了解日期和时间型单元吗?在Excel中没有这样...

netkongjian
2014/06/03
0
0
基于 PHP 的网站内容管理系统--五指CMS

五指CMS网站管理系统 五指cms网站管理系统,网站内容管理系统,php5+mysql开发。 服务器要求 Web服务器:apache/nginx/iis PHP环境要求:支持php5.2、php5.3、php5.4、php5.5、php5.6!(推荐...

wuzhicms
2015/05/20
9.3K
3
日均数十亿请求!京东评价系统海量数据存储高可用设计

转自:http://www.cnblogs.com/yangxiaolan/p/5786103.html 京东的商品评论目前已达到数十亿条,每天提供的服务调用也有数十亿次,而这些数据每年还在成倍增长,而数据存储是其中最重要的部分...

yntmdr
2017/09/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

在JavaScript中将数字转换为字符串的最佳方法是什么?

将数字转换为字符串的“最佳”方法是什么(就速度优势,清晰度优势,内存优势等而言)? 一些例子: String(n) n.toString() ""+n n+"" #1楼 如果需要将结果格式设置为特定的小数位数 (例如...

javail
24分钟前
111
0
51单片机中断学习

一、中断的概念 CPU在处理某一事件A时,发生了另一事件B请求CPU迅速去处理(中断发生); CPU暂时中断当前的工作,转去处理事件B(中断响应和中断服务); 待CPU将事件B处理完毕后,再回到原...

demyar
25分钟前
97
0
创龙TI KeyStone C66x多核定点/浮点DSP TMS320C665x 的拓展IO信号、FMC接口

广州创龙结合TI KeyStone系列多核架构TMS320C665x及Xilinx Artix-7系列FPGA设计的TL665xF-EasyEVM开发板是一款DSP+FPGA高速大数据采集处理平台,其底板采用沉金无铅工艺的6层板设计,适用于高...

Tronlong创龙
26分钟前
90
0
理解虚拟网络

概念 TUN/TAP,veth

认真即可
33分钟前
162
0
聊聊artemis的ServerConnectionLifeCycleListener

序 本文主要研究一下artemis的ServerConnectionLifeCycleListener BaseConnectionLifeCycleListener activemq-artemis-2.11.0/artemis-core-client/src/main/java/org/apache/activemq/artem......

go4it
34分钟前
111
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部