我有一个可以逐行解析大文件的脚本。当它遇到无法处理的错误时,它会停止,通知我们解析的最后一行。
这真的是寻找文件中特定行的最佳/唯一方法吗? (fseek()
在我的情况下不可用。)
<?php
for ($i = 0; $i < 100000; $i++)
fgets($fp); // just discard this
我使用它没有问题,它足够快 - 只是感觉有点脏。根据我对底层代码的了解,我不认为有更好的方法来做到这一点。
查找文件中特定行的一种简单方法是使用SplFileObject http://php.net/splfileobject类,它支持查找行号(seek() http://php.net/splfileobject.seek) 或字节偏移量 (fseek() http://php.net/splfileobject.fseek).
$file = new SplFileObject('myfile.txt');
$file->seek(9999); // Seek to line no. 10,000
echo $file->current(); // Print contents of that line
在背景中,seek()
只是做你的 PHP 代码所做的事情(C 代码除外)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)