我希望程序逐行打印文档内容,同时既没有到达文件末尾,也没有找到单词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>";
}
?>
答案 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
。