2013-03-18 55 views
0

获取特定行我想知道如何通过fgets()fgetss()读取特定行(甚至特定字符)。如何使用fgets()或fgetss()

例如;
data.txt-

this is data 1 
this is data 2 
this is data 3 

我怎么会只读数据2?

如果可能,那就是。
另外,我怎样才能只读最后一行?就像如果我使用a+在文件末尾写入一样,它会是最新的内容。

另一个问题:
是否可以通读整个文件并检查是否存在?如果是这样,怎么样?

在此先感谢!

+0

除非您知道_exactly_文件的外观(它是一致的和可重复的),否则您将无法使用。做到这一点的唯一方法是'fseek'到文件中启动所需行的位置。但是,再次,在不知道确切的数据长度之前,你放置的任何东西都只是一个猜测。只需使用'fgets'逐行读取文件,直到找到所需的行。 – 2013-03-18 19:43:55

+0

@Colin Morelli是的,这就是我的想法。有什么办法可以检查整个文件是否存在? – hexagonest 2013-03-18 19:52:50

+0

您可以使用'file_get_contents',但必须将整个文件加载到内存中。 – 2013-03-18 20:08:53

回答

0

对于文本文件:

$fileName = 'file.txt'; 
$file = new \SplFileObject($fileName); 
$file->setFlags(\SplFileObject::READ_CSV); 

$seek = 1; 
$file->seek($seek); 

$line = $file->fgets(); 

$line变量具有从文件第二行。

+0

你能向我解释一下吗?我真的不明白这一点。 PS。我是一个PHP noob。 – hexagonest 2013-03-18 19:49:34

+0

看这里:[SplFileObject](http://www.php.net/manual/pl/class.splfileobject.php),寻找方法:'seek'和'fgets'。 'seek'方法将指针设置在行的开头,'fgets'返回这一行。 – mkjasinski 2013-03-18 19:53:59