问题描述
据说,fopen
可以使用t
模式将\n
转换为\r\n
.所以,问题:
It is said, that fopen
can use t
mode to convert \n
to \r\n
. So, questions:
1)当我需要读写(r+
)时应该如何使用t
模式?是r+t
还是rt+
或tr+
?关于b
的相同问题,我应该写r+b
还是怎么写?
1) How should i use t
mode when i need to read and write (r+
)? Should it be r+t
or rt+
or tr+
? Same question for b
, should i write r+b
or how?
2)我已经尝试使用魔术模式t
在debian linux上将所有仅包含\n
到\r\n
的文件转换为文件(想了解其工作原理).但这是行不通的.我究竟做错了什么? t
模式什么时候起作用?
2) I've tried all variants on debian linux to convert file, that contains only \n
to \r\n
using magic mode t
(wanna understand how it works). But it does not work. What am I doing wrong? When t
mode works?
这是我的代码:
// Write string with \n symbols
$h = fopen('test.file', 'wt');
fwrite($h, "test \ntest \ntest \n"); // I've checked, after file is being created
fclose($h); // \n symbols are not substituted to \r\n
// Open file, that contains rows only with \n symbols
$h = fopen('test.file', 'rt');
$data = fread($h, filesize('test.file'));
fclose($h);
// I want to see what's inside
$data = str_replace("\n", '[n]', $data);
$data = str_replace("\r", '[r]', $data);
// finally i have only \n symbols, \r symbols are not added
var_dump($data);
推荐答案
因此没有Linux.另外,根据规范r+t
或r+b
都是正确的(但仅适用于Windows).
So no Linux. Also, according to the spec r+t
or r+b
would be correct (but only on Windows).
这篇关于PHP中的fopen't'兼容模式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!