Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP-如何在文本文档中剪切一行?_Php_Search_Text - Fatal编程技术网

PHP-如何在文本文档中剪切一行?

PHP-如何在文本文档中剪切一行?,php,search,text,Php,Search,Text,如何在PHP中从文本文件中剪切文本块。例如,我想取出第0-50行并将其转换为字符串。甚至可以在里面放一些html格式。我已经知道我需要删掉什么行了,我只是不知道如何选择它们并将它们放入字符串中 在新行上分解并输出0-50之间的数组值。使用文件($filename)。 结果是一个数组,其中每个元素都是文件中的一行。 样本: 内存占用较少的方法: $fileObject = new SplFileObject('yourFile.txt'); $fileIterator = new

如何在PHP中从文本文件中剪切文本块。例如,我想取出第0-50行并将其转换为字符串。甚至可以在里面放一些html格式。我已经知道我需要删掉什么行了,我只是不知道如何选择它们并将它们放入字符串中

在新行上分解并输出0-50之间的数组值。

使用文件($filename)。 结果是一个数组,其中每个元素都是文件中的一行。 样本:


内存占用较少的方法:

$fileObject      = new SplFileObject('yourFile.txt');
$fileIterator    = new LimitIterator($fileObject, 0, 49);
$firstFiftyLines = implode(iterator_to_array($fileIterator));
或者作为另一种选择

$fileObject      = new SplFileObject('yourFile.txt');
$fileIterator    = new LimitIterator($fileObject, 0, 49);
$firstFiftyLines = '';
foreach ($fileIterator as $currentLine) {
    $firstFiftyLines .= $currentLine;
}
如果需要其他行,请将第二个和第三个参数更改为。第一个是起始偏移量,第二个是迭代计数(在此上下文中读取行)

标记答案CW,因为问题(和答案)是

使用打开文件,使用读取前50行

$fp=fopen('myfile.txt','rt');
如果($fp)
{
对于($i=0;$i<50;$i++)
{
$s=fgets($fp);
…添加错误检查,并对此处的行执行某些操作
}
}

即使您需要读取一个大文件的前50行,这也是有效的。

您的行是如何划分的?硬回报?如果是这样的话,你可以将你的字符串分解成一个数组,然后从数组中取出前50(0-49)行。这里有一个非常类似的问题,如何获得文本文件的前20行:@Surreal这是一个不同的问题,当涉及到从文本中剪切任意块时,@Gordon:的可能重复看起来有点像,我懂了。我读了0-50,还记得“前20个”。我想说它仍然可以应用,并且很有用,尽管它不是完全相同的问题。当你有大文件时,explode不是很有效。除了可能的速度问题外,您还需要2倍的内存来完成此操作。最好使用fgets逐行阅读,或者按照Oliver A.的建议使用file()函数。
$fileObject      = new SplFileObject('yourFile.txt');
$fileIterator    = new LimitIterator($fileObject, 0, 49);
$firstFiftyLines = '';
foreach ($fileIterator as $currentLine) {
    $firstFiftyLines .= $currentLine;
}
$fp = fopen('myfile.txt', 'rt');
if ($fp)
{
    for ($i = 0; $i < 50; $i++)
    {
        $s = fgets($fp);
        ...add error checking and do something with the line here
    }
}