我想使用PHP在文本文件中从第51行到第100行阅读。
文本文件在任何给定时间都包含少于500行。
我想从51到100行读取。没有其他行。
我希望你理解这个问题。我曾经多次使用SO而且喜欢它。在任何地方都找不到这个答案。
任何帮助将不胜感激。提前谢谢。
答案 0 :(得分:1)
使用while
,fopen
和feof
(适用于阅读大文件8)),如下所示:
<?php
function retrieveText($file, $init, $end, $sulfix = '')
{
$i = 1;
$output = '';
$handle = fopen($file, 'r');
while (false === feof($handle) && $i <= $end) {
$data = fgets($handle);
if ($i >= $init) {
$output .= $data . $sulfix;
}
$i++;
}
fclose($handle);
return $output;
}
关于如何使用此函数获取第51行到第100行的示例:
echo retrieveText('myfile.txt', 51, 100);
添加折断线:
echo retrieveText('myfile.txt', 51, 100, PHP_EOL);
在html中添加分隔线:
echo retrieveText('myfile.txt', 51, 100, '<br>');
答案 1 :(得分:1)
根据Guilherme的例子,在这里发布另一个例子:
在我的盒子上测试了Guilherme的代码之后,我发现它在使用feof()
时遇到了错误,而他的代码应该有效(逻辑是合理的),它确实会破坏。
以下方法(以与他相同的方式使用)应该是一个替代工作。
function retrieveText($file, $min, $max)
{
$output = Array();
$line = -1;
$handle = fopen($file, 'r');
while(!feof($handle)) {
$line++;
if(($line >= $min && $line <= $max)) {
$output[] = fgets($handle);
} elseif($line > $max) {
break;
} else {
fgets($handle);
}
}
fclose($handle);
return implode("\n", $output);
}
请注意,这会使用回车符分隔每一行"\n"
,您可以将其更改为"<br />"
或您喜欢的任何内容,具体取决于您显示结果的位置。