首页 文章

有时在PHP '<'符号影响fgets行读取时,fget不会读取完整行

提问于
浏览
0

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+

它只读取部分行,但只要遇到“<”小于符号,它就会截断该行 . 其他类似的行读得很好,但有些行中的<字符会被截断 . 但是,如果我在小于符号之后放置一个'引号,那么该行将完整读取 . 例如,<'导致整行被正确读取 . 很奇怪 . 这就像有时影响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

寻求解释和解决方案 .

1 回答

  • 1

    人们是 htmlentities() 功能解决了这个问题 . 非常感谢您的回复 . 非常感激 .

    SOLUTION:

    echo " DATALINE ==> " . htmlentities($dataline) . "<br>";
    

相关问题