» »

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
<?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.

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č.

Zgodovina sprememb…

  • spremenilo: a-ptuj1 ()


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Python - pomoč (strani: 1 2 3 )

Oddelek: Programiranje
10317997 (8745) black ice
»

Bash skripta

Oddelek: Programiranje
243235 (2547) poweroff
»

[javascript] zazeni, pocakaj, osvezi

Oddelek: Programiranje
6985 (818) detroit
»

Makroji v excelu

Oddelek: Programska oprema
62467 (2361) smetko
»

Sortiranje podatkov v PHPju

Oddelek: Programiranje
81189 (1039) poweroff

Več podobnih tem