2012-08-11 4 views
1

Je veux supprimer les 23 premières lignes du début d'un fichier et les remplacer par une chaîne contenant 10 lignes, par ex.remplacer les 23 premières lignes de fichier avec une chaîne contenant 10 lignes php

$newstring = "line1 
2 
3 
4 
5 
6 
7 
8 
9 
10"; 

Quelle est la manière la plus facile de s'y prendre? J'ai joué avec fwrite, mais je fais vraiment quelque chose de mal.

+0

[ce que vous avez essayé?] (Http://whathaveyoutried.com) – Don

+0

http://stackoverflow.com/questions/215896/how-to-use-php-to-delete-x-number -d-lines-from-the-begin-of-a-text-file – Stony

+0

La dernière chose que j'ai essayé était de supprimer les lignes vides avec preg_replace puis d'écrire dans 10 lignes de texte et 13 lignes vides avec $ txtw = fopen ('txt .txt ',' r '); Fwrite ($ txtw, $ newstring) ; fclose ($ txtw); – John

Répondre

1
replace_first_lines_in_file('path/to/file.txt', 23, $new_string); 


function replace_first_lines_in_file($file_path, $num_lines, $new_string) 
{ 

    $file = file_get_contents($file_path); 
    if(! $file) 
     return false; 

    $pattern = '#^([^\n]*\n){' . $num_lines . '}#si'; 
    $new_file = preg_replace($pattern, $newstring, $file); 

    if(! file_put_contents($file_path, $new_file)) 
     return false; 

    return true; 

} 
+0

merci, mais je voudrais écrire dans le même fichier que je lis - pouvez-vous file_put_contents au fichier que vous lisez? – John

+1

Oui. Vous en lisez. Ensuite, vous écrivez - c'est deux opérations distinctes. Vous ne lisez et n'écrivez pas en même temps. – HappyTimeGopher

+0

@John Edité selon votre commentaire. – HappyTimeGopher

Questions connexes