fgets() 没有读取整行

fgets() doesn't read the full line

我有一个包含以下长单行随机字符串的文件:

fuzzero^G5%eLz@5?0jzlqCA};iBdi>hSa0Uc"DS{m*JVMPMN),)dBnbwGNKYE#uP@WGyV#kjC&(2yW1l`DJ,`3Mz#5gbU}eAUU)uB7N><A"qa;M{y9{mdKW"P?4o`jZI<M?tTElL<f?3aC1JM0&ZKGTewYDk;g$`#UhAcD05S>8#tap'aaUVQr`14rl0I3`oY6Z`JZ'fR3:{em"owN{0"(1}en}Wr*,3>Z<AC(Q8?M64(0siNrjGdkEsIB2)n2?e@%PiRjqH&xLSx<|,j8Fxt{Z|z@YW%P|JyE@3Y6KID9f`25)ldtSGrvw@b9C'YrDa&jeIpY5#(lR`qFaE)#,ecv'oFwihYWsI"G5ija,5wQ'Wa4f}*ec{K6n3DGlfgNXa8#tr>sxo}s,7xe4jsgh?nF"!,e"g#Qq|xTgp0ON{;M5s!aL6r$}On>sm5lD(?$XoB<NBGezC!F%EQuL;cIJzz?WFcds2;3rx;<)C6m<*#Xqw6|riy|S(@ts<HU'CYl)Teordizuzfeid

我写了 php 代码来读取这一行:

$myfile = fopen($path, "r") or die("Unable to open file!");
$txt=fgets($myfile);
echo $txt;

fclose($myfile);

输出是随机字符串的一部分:

fuzzero^G5%eLz@5?0jzlqCA};iBdi>hSa0Uc"DS{m*JVMPMN),)dBnbwGNKYE#uP@WGyV#kjC&(2yW1l`DJ,`3Mz#5gbU}eAUU)uB7N>8#tap'aaUVQr`14rl0I3`oY6Z`JZ'fR3:{em"owN{0"(1}en}Wr*,3>Zsxo}s,7xe4jsgh?nF"!,e"g#Qq|xTgp0ON{;M5s!aL6r$}On>sm5lD(?$XoB

如何读取和显示完整的字符串?

发布的代码工作正常。它从文件中读取 527 个字节。

如果你在浏览器中 运行 这个 PHP 脚本,你认为它遗漏的部分 (<A"qa;M{y9{mdKW"P?4ojZI<M?tTElL<f?3aC1JM0&ZKGTewYDk;g$#UhAcD‌​05S>) 看起来像一个 HTML 元素,但它不是由浏览器显示。

检查页面源代码(在菜单或开发人员工具中找到)以查看脚本生成的确切输出。

或者,更好的是,使用 PHP header() 函数告诉浏览器脚本生成的内容是文本,而不是 HTML:

header('Content-Type: text/plain');
$myfile = fopen($path, "r") or die("Unable to open file!");
$txt=fgets($myfile);
echo $txt;

fclose($myfile);

如果您想一次读取文件的全部内容,那么 PHP 提供了专门用于此目的的函数 file_get_contents()

header('Content-Type: text/plain');
$txt = file_get_contents($path);
echo($txt);