Forum » Programiranje » Brisanje iz TXT datoteke PHP
Brisanje iz TXT datoteke PHP
a-ptuj1 ::
Napisal bi rad PHP skript, ki bo izbrisal tekst iz ene od vrstic v TXT datoteki, ostale vrstice v datoteki pa pustil nespremenjene.
V datoteki "data.txt" je na primer tekst v štirih vrsticah in sicer naslednji tekst:
konj|velik|bel|103
ovca|mala|siva|205
srna|srednja|rjava|414
bik|velik|rjav|23
Želim izbrisati le vrstico z id=414 v kateri je tekst "srna|srednja|rjava|414", ostali tekst pa mora ostati. Sem napisal naslednji PHP skript
To mi izpiše
Array ( [0] => konj [1] => velik [2] => bel [3] => 103 )
Array ( [0] => ovca [1] => mala [2] => siva [3] => 205 )
Array ( [0] => srna [1] => srednja [2] => rjava [3] => 414 )
Array ( [0] => bik [1] => velik [2] => rjav [3] => 23 )
Kako narediti da bi mi izpisal samo
Array ( [0] => srna [1] => srednja [2] => rjava [3] => 414 )
In kako samo to vrstico izbrisati, ostale pa pustiti nedotknjene. Končni izgled data.txt datoteke mora zgledati po izvedbi PHP skripta tako.
konj|velik|bel|103
ovca|mala|siva|205
bik|velik|rjav|23
Zadeva z MySQL ne pride v poštev.
Že naprej hvala za pomoč.
V datoteki "data.txt" je na primer tekst v štirih vrsticah in sicer naslednji tekst:
konj|velik|bel|103
ovca|mala|siva|205
srna|srednja|rjava|414
bik|velik|rjav|23
Želim izbrisati le vrstico z id=414 v kateri je tekst "srna|srednja|rjava|414", ostali tekst pa mora ostati. Sem napisal naslednji PHP skript
<?php $vsevrstice = file('data.txt'); $kljuc = 414; foreach($vsevrstice as $kluc => $vrstica){ echo strstr($vrstica,$kljuc)."<br>"; print_r (explode("|",$vrstica)); } ?>
To mi izpiše
Array ( [0] => konj [1] => velik [2] => bel [3] => 103 )
Array ( [0] => ovca [1] => mala [2] => siva [3] => 205 )
Array ( [0] => srna [1] => srednja [2] => rjava [3] => 414 )
Array ( [0] => bik [1] => velik [2] => rjav [3] => 23 )
Kako narediti da bi mi izpisal samo
Array ( [0] => srna [1] => srednja [2] => rjava [3] => 414 )
In kako samo to vrstico izbrisati, ostale pa pustiti nedotknjene. Končni izgled data.txt datoteke mora zgledati po izvedbi PHP skripta tako.
konj|velik|bel|103
ovca|mala|siva|205
bik|velik|rjav|23
Zadeva z MySQL ne pride v poštev.
Že naprej hvala za pomoč.
hellboy124 ::
<?php $idInArray = 3; // V katerem delu exploadanega arraya/linije je iskan ID? $searchedId = '414'; // Kateri ID se isce? $fileName = 'data.txt'; // Ime fajla $fileLines = file( $fileName ); $newFileContent = array(); // Tukaj se bojo shranile vse linije, razen tiste z iskanim IDjem (zato da se pozneje prepiše stari fajl z tole vsebino) foreach( $fileLines AS $lineNumber => $line ) { $lineExploadedArray = explode('|', $line); // exploadaj v array if( $lineExploadedArray[$idInArray] != $searchedId ) // Ce ta trenutna linija NI tista, v kateri je iskan ID ... $newFileContent[] = $line; // ... potem se naj shrani v nov array } $fh = fopen( $fileName , 'w+' ) OR die( 'Datoteke ni mogoče odpreti!' ); // Priprava datoteke za prepis fwrite( $fh, implode( "\n", $newFileContent ) ); // Zapis nove vsebine v fajl fclose( $fh ); // Zapremo file
Nekak tak bi moralo delovat. Sigurno se bi našla še kaka bolj elegantna rešitev, samo ok :).
a-ptuj1 ::
Pozdravljeni
Hvala Vam @helliboy124 za skripto. Ta Vaša skripta dela vredu, ne javi nobene napake, vendar ne izbriše vrstice Kateri ID se išče (414). Odpre mapo data.txt in vanjo prepiše ves tekst, kot je bil že prej, le da med posameznimi vrsticami naredi eno prazno vrstico. Datoteka data.txt zgleda po izvedeni skripti takole:
konj|velik|bel|103
ovca|mala|siva|205
srna|srednja|rjava|414
bik|velik|rjav|23
Ne izbriše pa vrstice z vsebino "srna|srednja|rjava|414".
Že naprej hvala.
Hvala Vam @helliboy124 za skripto. Ta Vaša skripta dela vredu, ne javi nobene napake, vendar ne izbriše vrstice Kateri ID se išče (414). Odpre mapo data.txt in vanjo prepiše ves tekst, kot je bil že prej, le da med posameznimi vrsticami naredi eno prazno vrstico. Datoteka data.txt zgleda po izvedeni skripti takole:
konj|velik|bel|103
ovca|mala|siva|205
srna|srednja|rjava|414
bik|velik|rjav|23
Ne izbriše pa vrstice z vsebino "srna|srednja|rjava|414".
Že naprej hvala.
hellboy123 ::
Ups, res je. Kodo sem čist na pamet pisal. Tak, tole pa bi zdaj moralo delat :)
<?php $idInArray = 3; // V katerem delu exploadanega arraya/linije je iskan ID? $searchedId = '414'; // Kateri ID se isce? $fileName = 'data.txt'; // Ime fajla $fileLines = file( $fileName ); $newFileContent = array(); // Tukaj se bojo shranile vse linije, razen tiste z iskanim IDjem (zato da se pozneje prepiše stari fajl z tole vsebino) foreach( $fileLines AS $lineNumber => $line ) { $lineExploadedArray = explode('|', $line); // exploadaj v array if( trim( $lineExploadedArray[$idInArray] ) != $searchedId ) // Ce ta trenutna linija NI tista, v kateri je iskan ID .. $newFileContent[] = trim( $line ); // ... potem se naj shrani v nov array } $fh = fopen( $fileName , 'w+' ) OR die( 'Datoteke ni mogoče odpreti!' ); // Priprava datoteke za prepis fwrite( $fh, implode( "\n", $newFileContent ) ); // Zapis nove vsebine v fajl fclose( $fh ); // Zapremo file
a-ptuj1 ::
Dela.
Najlepša hvala Vam @helliboy123 za skripto in Vašo pomoč.
Najlepša hvala Vam @helliboy123 za skripto in Vašo pomoč.
Zgodovina sprememb…
- spremenilo: a-ptuj1 ()
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Python - pomoč (strani: 1 2 3 )Oddelek: Programiranje | 17953 (8701) | black ice |
» | Bash skriptaOddelek: Programiranje | 3232 (2544) | poweroff |
» | [javascript] zazeni, pocakaj, osveziOddelek: Programiranje | 985 (818) | detroit |
» | Makroji v exceluOddelek: Programska oprema | 2465 (2359) | smetko |
» | Sortiranje podatkov v PHPjuOddelek: Programiranje | 1186 (1036) | poweroff |