Php FGET是否忽略某些字符组合?
我使用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
$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规则中以数字开头的代码。你在浏览器上打印这个吗?我知道我在回避编码实践。这只是一个内部原型。