2013-04-29 28 views
2

我希望該計劃由行打印的文檔內容線,而沒有達到文件沒有結束或者找到這個詞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

改變這種狀況

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

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

我想打印文件的內容befor嗨字只是代碼 防止其他內容的文件打印你得到它?? – TheSniper104 2013-04-29 04:53:24

+0

試試這個代碼,如果條件。 – 2013-04-29 04:56:17

+0

same pro 看看我想要的是一行一行地打印文件,直到找到'hi'字樣 – TheSniper104 2013-04-29 05:30:30

0

你的意思是通過打印行的文件,直到行字 '喜' 被發現?

<?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_matchstrpos

+0

什麼是$主題? – TheSniper104 2013-04-29 05:29:51

+0

這裏是hi之後輸出文字的結果仍然顯示 php是個特例嗨。您將使用迭代解決方案使用更少的內存。而且,PHP中的函數調用代價很高,所以最好避免函數調用。 注意:未定義的變量:主題在第11行的G:\ xampp \ htdocs \ zdss \ hiline.php中 – TheSniper104 2013-04-29 05:47:12