获取特定行我想知道如何通过fgets()
或fgetss()
读取特定行(甚至特定字符)。如何使用fgets()或fgetss()
例如;
data.txt-
this is data 1
this is data 2
this is data 3
我怎么会只读数据2?
如果可能,那就是。
另外,我怎样才能只读最后一行?就像如果我使用a+
在文件末尾写入一样,它会是最新的内容。
另一个问题:
是否可以通读整个文件并检查是否存在?如果是这样,怎么样?
在此先感谢!
获取特定行我想知道如何通过fgets()
或fgetss()
读取特定行(甚至特定字符)。如何使用fgets()或fgetss()
例如;
data.txt-
this is data 1
this is data 2
this is data 3
我怎么会只读数据2?
如果可能,那就是。
另外,我怎样才能只读最后一行?就像如果我使用a+
在文件末尾写入一样,它会是最新的内容。
另一个问题:
是否可以通读整个文件并检查是否存在?如果是这样,怎么样?
在此先感谢!
对于文本文件:
$fileName = 'file.txt';
$file = new \SplFileObject($fileName);
$file->setFlags(\SplFileObject::READ_CSV);
$seek = 1;
$file->seek($seek);
$line = $file->fgets();
在$line
变量具有从文件第二行。
你能向我解释一下吗?我真的不明白这一点。 PS。我是一个PHP noob。 – hexagonest 2013-03-18 19:49:34
看这里:[SplFileObject](http://www.php.net/manual/pl/class.splfileobject.php),寻找方法:'seek'和'fgets'。 'seek'方法将指针设置在行的开头,'fgets'返回这一行。 – mkjasinski 2013-03-18 19:53:59
除非您知道_exactly_文件的外观(它是一致的和可重复的),否则您将无法使用。做到这一点的唯一方法是'fseek'到文件中启动所需行的位置。但是,再次,在不知道确切的数据长度之前,你放置的任何东西都只是一个猜测。只需使用'fgets'逐行读取文件,直到找到所需的行。 – 2013-03-18 19:43:55
@Colin Morelli是的,这就是我的想法。有什么办法可以检查整个文件是否存在? – hexagonest 2013-03-18 19:52:50
您可以使用'file_get_contents',但必须将整个文件加载到内存中。 – 2013-03-18 20:08:53