<?
[...]
$line = fgets($file);
while(!feof($file)){
if(($line)!==('da7or')){
{
echo fgets($file)."<br />";
}
}}
[...]
?>
文件类似于:
nick1
da7or
nick3
nick4
nick5
我不希望显示“da7or”,但它总是从文件的第一行删除nick。
答案 0 :(得分:2)
因为您正在调用两次fgets尝试类似:
[..]
while(!feof($file))
{
$line = trim(fgets($file));
if(($line)!==('da7or'))
{
echo $line ."<br />";
}
}
[..]
注意到之前没有fgets
答案 1 :(得分:1)
fgets()
也会返回换行符。你必须要做
if (trim($line) !== 'da7or')
去掉那些角色。请注意,如果您的任何行也使用空格字符开头,则trim也会删除这些字符。 除此之外,你的逻辑是有缺陷的。
你获取一条线,比较是反对da7or,然后直接输出每一行。你的循环应该是:
while ($line = fgets($file)) {
if (trim($line) !== 'da7or') {
echo $line
}
}
答案 2 :(得分:1)
使用循环读取文件行是有点愚蠢的
因为有一个功能:file()
$names = file("names.txt", FILE_IGNORE_NEW_LINES);
$names = array_diff($names, array("da7or"));
简单array_diff
从列表中删除不需要的元素。然后打印出其余部分。
答案 3 :(得分:0)
您永远不会在第一次之后更新$line
。
<?php
while (!feof($file) && $line = fgets($file))
{
if (trim($line) != 'da7or')
echo $line;
}
答案 4 :(得分:0)
您必须选择,如果您将文件行读入$ line,则无法回显fgets,您需要回显$ line(并使用fget重新加载$ line变量)