2014-10-09 113 views
1

我试图使用fwrite()将HTML添加到文件。我的最终目标是让它在文件末尾添加15行。以下是我迄今为止:如何将文本追加到文件的最后15行

<?php 
    $file = fopen("index.html", "r+"); 
    // Seek to the end 
    fseek($file, SEEK_END, 0); 
    // Get and save that position 
    $filesize = ftell($file); 
    // Seek to half the length of the file 
    fseek($file, SEEK_SET, $filesize + 15); 
    // Write your data 
    $main = <<<MAIN 
    //html goes here 
    MAIN; 
    fwrite($file, $main); 
    // Close the file handler 
    fclose($file); 
?> 

这只是一味地覆盖该文件的顶部。 谢谢。

+1

该文件有多大?如果它始终是巨大的,我不会尝试它,但如果它很小,使用'file()'将整个事件读入一行数组中,然后相应地切片数组,然后使用'implode() '回来并写出来 – 2014-10-09 01:32:45

+1

如果你想将HTML插入到HTML文档中,不要任意做,你应该使用DOM解析器来找到你想要添加到的确切位置。 – 2014-10-09 01:34:16

+0

您需要重新创建文件。 – sectus 2014-10-09 01:39:52

回答

1

由于您正在处理文件大小(除非在此处未提及应用程序中定义行的假定),因此问题中的示例代码不基于行操作。如果您想使用线条,那么您需要搜索新的线条字符(将每行与下一行分隔开)。

如果目标文件不是一个大文件(所以我们可以将整个文件加载到内存中),我们可以使用PHP内置的file()将文件的所有行读入一个数组,然后插入数据在第15个元素之后。像这样:

<?php 
$lines = file($filename); 
$num_lines = count($lines); 
if ($num_lines > 15) { 
    array_splice($lines, $num_lines - 15, 0, array($content)); 
    file_put_contents($filename, implode('', $lines)); 
} else { 
    file_put_contents($filename, PHP_EOL . $content, FILE_APPEND); 
} 
+0

谢谢!这工作完美。 – durrtykurty 2014-10-09 03:42:30

相关问题