PHP易于解决

时间:2011-10-17 15:09:48

标签: php

<?
[...]
$line = fgets($file);
while(!feof($file)){
        if(($line)!==('da7or')){
        {
    echo fgets($file)."<br />";
        }
}}
[...]
?>

文件类似于:
nick1
da7or
nick3
nick4
nick5

我不希望显示“da7or”,但它总是从文件的第一行删除nick。

5 个答案:

答案 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变量)