PHP:fread和换行符
如果我制作一个简单的文本文件,如以下所示:PHP:fread和换行符,php,newline,fread,Php,Newline,Fread,如果我制作一个简单的文本文件,如以下所示: first line. second line. 0 : 66 69 72 73 74 [first] 0 : 20 6c 69 6e 65 2e [ line.] 0 : 0a [.] 0 : 73 65 63 [sec] 并按以下方式应用fread: $fh = fopen("test_file_three.txt",'r') or die("Error attempting to open file."); $first_word
first line.
second line.
0 : 66 69 72 73 74 [first]
0 : 20 6c 69 6e 65 2e [ line.]
0 : 0a [.]
0 : 73 65 63 [sec]
并按以下方式应用fread:
$fh = fopen("test_file_three.txt",'r') or die("Error attempting to
open file.");
$first_word = fread($fh,5);
$second_word = fread($fh,6);
$third_word = fread($fh,1);
$fourth_word = fread($fh,3);
echo $first_word;
echo "<br />";
echo $second_word;
echo "<br />";
echo $third_word;
echo "<br />";
echo $fourth_word;
echo "<br />";
(或者,用==代替==)
然后它被证明是假的;测试$newline_char='\n';然而,在这种情况下,if语句可以很好地工作。这里发生了什么?是否存储了换行符?
=
操作符检查值和类型
$x===$y
如果$x等于$y,并且它们的类型相同,则返回true
我假设它接收并存储新行字符
你的假设是正确的
根据您创建文件的方式,它将是\n
(在Unix、OS X上)或\r\n
(在Windows上)
确保检查编辑器的行尾字符
这里发生了什么
if的计算结果为false,因为'\n'
表示反斜杠和n
字符
使用双引号获取换行符:“\n”
,您的if应计算为true
我真的建议您使用hextump函数,这样您就可以确切地知道字符串中存储了什么 通过调用
hex\u dump
而不是echo
来调整代码:
hex_dump($first_word);
hex_dump($second_word);
hex_dump($third_word);
hex_dump($fourth_word);
给我以下信息:
first line.
second line.
0 : 66 69 72 73 74 [first]
0 : 20 6c 69 6e 65 2e [ line.]
0 : 0a [.]
0 : 73 65 63 [sec]
您可以看到,
$third\u word
由一个单字节0x0a
,它是换行符(\n
)的二进制表示形式。可能不是\n
可能是\r
,也可能只是```。单引号表示文字字符串,可能需要尝试双引号。