PHP读取文本文件,直到匹配条件中断

时间:2011-12-18 09:06:39

标签: php

我想在PHP中读取文本文件,在匹配条件后中断或退出。

PHP代码:

$file = fopen("testFile.txt", "r") or exit("Unable to open file!");
//Output a line of the file until the end is reached
while(!feof($file))
{

    $line = fgets($file, 1024); 
    if($line=="NOTE"){
        break;
    }
    echo $line ."<br>";

}
fclose($file); 

示例

line1: i love u so much
line2: this is tom
Line3: note
Line: this is jam

结果需要:

遇见笔记时会中断。

line1: i love u so much
line2: this is tom

3 个答案:

答案 0 :(得分:1)

您从fgets()获得的行仍包含尾随换行符。所以你要么必须检查修剪线:

 if (trim($line) == "NOTE")

或者,如果您确定换行符(\ n或\ r \ n)确切的行:

 if ($line == "NOTE\r\n") {

如果你只想检查NOTE的行的开头,还是strstr()或strpos(),如果你想检查行中某处的存在,还有其他选择包括strncmp()。

答案 1 :(得分:1)

从我收集的内容中你可以得到不同的案例,就像马里奥所说的那样,你也有最终结果。你应该这样检查:

if(strtolower(trim($line)) == "note"){
    break;
}

答案 2 :(得分:0)

我建议file_get_contents

$sFile = file_get_contents("testFile.txt") or die("Unable to open file!");
$sFile = preg_replace(array("/\r\n/", "/\r/", "/\n/"), "<br />", $sFile); //array because of some fixes
$sFile = preg_replace("/<br \/>(\s+)?Note(\s+)?(<br \/>.+|$)/i", "<br />", $sFile);
echo $sFile;