打印文件的内容,直到找到单词hi

时间:2013-04-29 04:45:17

标签: php filesystems

我希望程序逐行打印文档内容,同时既没有到达文件末尾,也没有找到单词hi

问题是当它找到单词hi时,虽然位于第22位,但它没有打印。为什么不打印前面的单词如何解决这个问题。

我的文件包含“Php是一个特殊情况hi。您将使用迭代解决方案使用更少的内存。此外,PHP中的函数调用成本很高,因此最好尽可能避免函数调用。”串。 这是我的代码

<?php
$contents = file_get_contents('m.txt');
$search_keyword =  'hi';

// check if word is there
$file=fopen("m.txt","r+");

while(!feof($file)&&strpos($contents, $search_keyword) == FALSE)
{

    echo fgets($file)."<br>";

}
?>   

2 个答案:

答案 0 :(得分:0)

改变这种情况

while(!feof($file)&&strpos($contents, $search_keyword) == FALSE)

while(!feof($file)) {
    if(strpos($contents, $search_keyword) === FALSE) {
         echo fgets($file)."<br>";
    } else
         break;
    }
}

答案 1 :(得分:0)

您的意思是逐行打印文件,直到找到“hi”这个词?

<?php
$search_keyword = 'hi';
$handle = @fopen("m.txt", "r");
if ( $handle )
{
    // Read file one line at a time
    while ( ($buffer = fgets($handle, 4096)) !== false )
    {
        echo $buffer . '<br />';

        if ( preg_match('/'.$search_keyword.'/i', $subject) )
            break;
    }

    fclose($handle);
}
?>

如果您愿意,可以将preg_match替换为strpos