2014-10-09 2 views
1

fwrite()을 사용하여 파일에 HTML을 추가하려고합니다. 최종 목표는 파일 끝에 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() '다시 쓰고 쓰십시오. –

+1

HTML을 HTML 문서에 삽입하려면 임의로하지 마십시오. DOM 파서를 사용하여 추가하려는 정확한 위치를 찾아야합니다. –

+0

파일을 다시 만들어야합니다. – sectus

답변

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

관련 문제