PHP fgets函数未完全读取以下文本文件行。我使用fgets逐行读取某些数据。
无法完全读取的行如下;
%107A195U<u--8+5-9+6-17+3-5v<1
truncates to: %107A195U
%113A120+<l56+2l5-6+<17+2-+6-+2
truncates to: %113A120+
它只会读取部分行,但只要遇到&#34;&lt;&#34;小于标志,它截断该行。其他类似的行看起来很好,但有些与&lt;它们中的字符被截断。但是,如果我把一个单一的&#39;在小于符号之后引用,然后该行全部读取。例如&lt;&#39;导致整行正确读取。很奇怪。它有点像有效影响fgets行读取,取决于旁边的其他字符。
例如,其他读得完全正常的行如下所示;
%106A191+->2-15l8v<><10-4+u
%108A189+l-E-hj2l6+3l-14+2->-6l4+l2
%109A188vh->Xfp-+8l-3+5-l3l+11-l>7
%110A186+wo2v+o4-2++qd5+5-+<3+<+3-+1
计划代码
<?php
echo "START " ."<br>";
$FileName = "./test5.txt";
$infile = fopen($FileName, "r") or die("Unable to open file!");
$dataline = fgets($infile);
while(!feof($infile)) {
$dataline = fgets($infile);
echo " DATALINE ==> " . $dataline . "<br>"; //debug
}//endloop
?>
节目数据文件 - text5.txt
TEST DATA FILE
%106A191+->2-15l8v<><10-4+u
%107A195U<u--8+5-9+6-17+3-5v<1
%108A189+l-E-hj2l6+3l-14+2->-6l4+l2
%109A188vh->Xfp-+8l-3+5-l3l+11-l>7
%110A186+wo2v+o4-2++qd5+5-+<3+<+3-+1
%111A186qGBl4l<+<3+3l-5+u15u6
%112A182+u>2-4-2+2-16+2u+-2+-3->2
%113A120+<l56+2l5-6+<17+2-+6-+2
%114A120l>2-50+->u2g+<18+-6+<69+
END DATA
计划输出
START
DATALINE ==> %106A191+->2-15l8v<><10-4+u
DATALINE ==> %107A195U DATALINE ==> %108A189+l-E-hj2l6+3l-14+2->-6l4+l2
DATALINE ==> %109A188vh->Xfp-+8l-3+5-l3l+11-l>7
DATALINE ==> %110A186+wo2v+o4-2++qd5+5-+<3+<+3-+1
DATALINE ==> %111A186qGBl4l<+<3+3l-5+u15u6
DATALINE ==> %112A182+u>2-4-2+2-16+2u+-2+-3->2
DATALINE ==> %113A120+ DATALINE ==> %114A120l>2-50+->u2g+<18+-6+<69+
DATALINE ==> END DATA
寻求解释和解决方案。
答案 0 :(得分:1)
有人认为 htmlentities()功能解决了这个问题。非常感谢您的回复。非常感激。
解决方案:
echo " DATALINE ==> " . htmlentities($dataline) . "<br>";