Temat: Dopisanie do pliku w określonej linii

Czy jest możliwe dopisanie stringa do określonej linii w pliku?

Mam plik:

Lp. String n
5 String E
4 String D
3 String C
2 String B
1 String A

Chciałbym teraz dopisać - pobierając String F z formularza:

Lp. String n
6 String F
5 String E
4 String D
3 String C
2 String B
1 String A
Krzysztof N.

Krzysztof N. CEO. Aplikacje
internetowe i
mobilne. Symfony,
Zend.

Temat: Dopisanie do pliku w określonej linii

Jakub K.:
Czy jest możliwe dopisanie stringa do określonej linii w pliku?
Tak.

Temat: Dopisanie do pliku w określonej linii

A jakaś podpowiedź?
Krzysztof N.

Krzysztof N. CEO. Aplikacje
internetowe i
mobilne. Symfony,
Zend.

Temat: Dopisanie do pliku w określonej linii

Jakub K.:
A jakaś podpowiedź?
a) file_get_contents
b) pętla dla / na odczytanych danych
c) dodanie linii w odpowiednim miejscu
d) file_put_contents

konto usunięte

Temat: Dopisanie do pliku w określonej linii

Z przykładu, który podałeś widać, że chcesz dopisać linijkę na początku pliku, czyli jeden z wielu sposobów:
$file_data = "Stuff you want to add\n";
$file_data .= file_get_contents('database.txt');
file_put_contents('database.txt', $file_data);

Jedna rada, w google szybciej znajdziesz odpowiedź niż tutaj :)
Łukasz Z.

Łukasz Z. Specjalista ds
Informatyki w Mentor
S.A.

Temat: Dopisanie do pliku w określonej linii

Proponuję podejście podobne do tego, który zaproponował Krzysztof, ale z jedną modyfikacją - zamiast file_get_contents dać funkcję file, która zwróci treść pliku do tablicy (każdy element tablicy będzie odpowiadał jednej linii). Potem wyszukujesz w tablicy interesującą Ciebie linię, modyfikujesz i zapisujesz tablicę do pliku.
Krzysztof N.

Krzysztof N. CEO. Aplikacje
internetowe i
mobilne. Symfony,
Zend.

Temat: Dopisanie do pliku w określonej linii

Łukasz Z.:
(...) zamiast file_get_contents dać funkcję file, która zwróci treść pliku do tablicy (każdy element tablicy będzie odpowiadał jednej linii)
(...)
I słusznie.
Jakub, problem rozwiązany?

Temat: Dopisanie do pliku w określonej linii

Teoretycznie rozwiązany - w wolnej chwili biorę się za praktykę.

A i nie jest to dopisanie linii na początku bo tam jeszcze był "nagłówek". Chodzi mi o odpisanie linii od 12 linii. Albo po pierwszym tekście: np po <table id="umowy">. Czyli pierwszy wiersz w htmlowej tabelce.

konto usunięte

Temat: Dopisanie do pliku w określonej linii

Jeżeli znasz zawartość, to wiesz jak to obsłużyć. W tym przypadku chyba masz HTML'a, możesz równie dobrze wykorzystać klasę DOMDocument, wczytać zawartość pliku i zostanie on przetworzony na jej obiekt. Po czym odwołać się do tabeli, i utworzyć nowy wiersz. To są tylko moje domysły z tym co chcesz zrobić.

konto usunięte

Temat: Dopisanie do pliku w określonej linii

jednorazowy odczyt pliku może elegancko wywalić nam PHP jak mamy mały limit pamięci więc ostrożnie z takimi zabawami
Krzysztof N.

Krzysztof N. CEO. Aplikacje
internetowe i
mobilne. Symfony,
Zend.

Temat: Dopisanie do pliku w określonej linii

Przemysław R.:
jednorazowy odczyt pliku może elegancko wywalić nam PHP jak mamy mały limit pamięci więc ostrożnie z takimi zabawami
Zakładam, że autor wątku:
1. Ma niewielkich rozmiarów plik(-i)
2. Wie co robi i że przetwarzanie w ten sposób wielkich plików może powodować tego typu problemy

Temat: Dopisanie do pliku w określonej linii

Plik nie będzie miał rozmiaru większego niż 100 KB.Jakub K. edytował(a) ten post dnia 24.07.12 o godzinie 07:25

konto usunięte

Temat: Dopisanie do pliku w określonej linii

Krzysztof N.:
Przemysław R.:
jednorazowy odczyt pliku może elegancko wywalić nam PHP jak mamy mały limit pamięci więc ostrożnie z takimi zabawami
Zakładam, że autor wątku:
1. Ma niewielkich rozmiarów plik(-i)
2. Wie co robi i że przetwarzanie w ten sposób wielkich plików może powodować tego typu problemy

expect unexpected...

Temat: Dopisanie do pliku w określonej linii

Dobra, wnioski z mojej praktyki:P
Pobrałem sobie treść z pliku do tabeli za pomocą file, dodalem element w odpowiednie miejsce, ale nijak nie wiem jak "włożyć" na nowo do mojego pliku...
Łukasz Z.

Łukasz Z. Specjalista ds
Informatyki w Mentor
S.A.

Temat: Dopisanie do pliku w określonej linii

Spójrz tutaj -> fwrite
Zapewne trzeba też będzie dodać znak końca linii (nie pamiętam czy funkcja file przenosi go do tablicy) dla każdego wiersza.
Marcin Kula - Bukowski

Marcin Kula - Bukowski IT Project Manager,
AdPilot

Temat: Dopisanie do pliku w określonej linii

Jakub K.:
Dobra, wnioski z mojej praktyki:P
Pobrałem sobie treść z pliku do tabeli za pomocą file, dodalem element w odpowiednie miejsce, ale nijak nie wiem jak "włożyć" na nowo do mojego pliku...

$string = implode('', $modified_table);
file_put_contents('nazwa_pliku', $string)

Temat: Dopisanie do pliku w określonej linii

Dzięki za pomoc - już mi działa:)
Krystian Rożewicz

Krystian Rożewicz Admin. /
Programista PHP

Temat: Dopisanie do pliku w określonej linii

Nie zapomnij o zabezpieczeniu pliku przed kilkukrotnym otwarciem do zapisu :)

konto usunięte

Temat: Dopisanie do pliku w określonej linii


$edit = array();
$line_to_insert = 'Example value';

foreach(@file('./file.html') as $line) {
if(trim($line) == '<table class="klasa">')
$edit[] = trim($line . $line_to_insert);
else $edit[] = trim($line);
}
file_put_contents('./file.html', implode("\r\n", $edit));

/*
$content = implode("\r\n", $edit);
$handle = fopen('./file.html', 'w+'); flock($handle, 2);
@fwrite($handle, $content, strlen($content));
flock($handle, 2); fclose($handle);
*/

konto usunięte

Temat: Dopisanie do pliku w określonej linii

Wersja hard one-line:


$result = file_put_contents('./file.html', preg_replace("/<pewna linijka>/", "<pewna linijka>\r\nDodatkowa linia", file_get_contents('./file.html')));


:D

Następna dyskusja:

[Aptana] Znak nowej linii




Wyślij zaproszenie do