Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php FGET是否忽略某些字符组合?_Php - Fatal编程技术网

Php FGET是否忽略某些字符组合?

Php FGET是否忽略某些字符组合?,php,Php,我使用FGET逐行读取文件。某些字符串组合将被忽略。我猜这是作为一个逃跑的角色,但我不明白 我的代码是: $myFile = $_GET['filename']; $file = fopen($myFile, "r"); while (!feof($file)) { $currentLine = fgets($file); print $currentLine; } 我的档案是: 15:37:33 Me <Washington USA> outdoor 15:3

我使用FGET逐行读取文件。某些字符串组合将被忽略。我猜这是作为一个逃跑的角色,但我不明白

我的代码是:

$myFile = $_GET['filename'];

$file = fopen($myFile, "r");

while (!feof($file))
{
   $currentLine = fgets($file);
   print $currentLine;
}
我的档案是:

15:37:33 Me <Washington  USA>  outdoor
15:39:34 Me <Washington USA>  outdoor
15:41:36 Me <208 Terrace Ct SE USA>  outdoor
15:43:37 Me <305 Glyndon St SE USA>  indoor
15:37:33户外运动
15:39:34我在户外
15:41:36我在户外
15:43:37我在室内
然而,结果只是这样:

15:37:33 me outdoor 15:39:34 me outdoor 15:41:36 me <208 Terrace Ct SE USA> outdoor 15:43:37 me <305 Glyndon St SE USA> indoor
15:37:33室外15:39:34室外15:41:36室外15:43:37室内

为什么是直接在页面上查看还是在源代码中查看?
有一种浏览器隐藏它们的感觉:)

浏览器将<和>之间的文本解释为HTML标记(至少是那些不以数字开头的文本)。如果你看看你的网页的来源,我相信你会找到完整的文本

要解决您的问题,请使用PHP的htmlentities()函数,如下所示:

print htmlentities($currentLine);

忽略直接从
$\u GET
数组打开文件的问题一会儿,您需要将括号转换为HTML实体。要正确显示换行符,您可以在每行末尾添加

,或使用

$myFile = $_GET['filename'];
$file = fopen($myFile, "rb");
echo '<pre>';
while ($line = fgets($file)) {
    echo rtrim(htmlentities($line)), "\n";
}

现在,像这样打开文件。这是一个非常非常糟糕的主意。如果您只是将代码用于自己的用途,那么可以,但即使如此,它也可能会导致您没有想到的问题。最好不要使用客户端提供的数据打开文件,但如果必须这样做,请确保路径干净且不包含恶意内容(如前面的斜杠或圆点等)。

通过直接写入浏览器进行测试。否则我将如何测试?请参阅broswer中的页面源代码,因为您没有使用htmlentities()函数,并且您的broswer认为您创建了一个新的HTML标记或其他内容。事实上,它不会处理W3C规则中以数字开头的代码。你在浏览器上打印这个吗?我知道我在回避编码实践。这只是一个内部原型。