使用 PHP 读取文本文件中的特定行
Reading Specific Lines In Text File With PHP
我想使用 PHP.
读取文本文件中的第 51 行到第 100 行
文本文件在任何给定时间都少于 500 行。
我想阅读第 51 行到第 100 行。没有其他行。
希望你能理解我的问题。我用过很多次并且喜欢它。就是找不到这个问题的答案。
如有任何帮助,我们将不胜感激。提前致谢。
使用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>');
这里只是根据 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);
}
请注意,这使用回车 return 来分隔每一行 "\n"
,您可以将其更改为 "<br />"
或任何您喜欢的内容,具体取决于您将在何处显示结果。
我想使用 PHP.
读取文本文件中的第 51 行到第 100 行文本文件在任何给定时间都少于 500 行。
我想阅读第 51 行到第 100 行。没有其他行。
希望你能理解我的问题。我用过很多次并且喜欢它。就是找不到这个问题的答案。
如有任何帮助,我们将不胜感激。提前致谢。
使用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>');
这里只是根据 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);
}
请注意,这使用回车 return 来分隔每一行 "\n"
,您可以将其更改为 "<br />"
或任何您喜欢的内容,具体取决于您将在何处显示结果。