Autor Zpráva
Leopik x
Profil *
Ako by som mohol v subore mazat vzdy 10 riadok? teda sa texty doplnuju a text na 10 riadku by sa vymazal.
Leopik x
Profil *
staci mi len funkcia ako napr. tempnam, ja si to uz potom najdem
bukaj
Profil
Leopik x
Myslím, že na toto v PHP žádná speciální fce není. Ale lze to vyřešit jednoduše:
<?php
// přijímá celkem čtyři parametry, přičemž poslední je nepovinný
// funkce se nestará o pozici v souborech a neošetřuje žádné chyby
// - resource vstupního souboru
// - resource pro výstupní soubor
// - číslo řádku, který se nemá zapsat do výstupního souboru
// - nepovinný parametr, který bude použit jako znak (či více znaků) znamenající konec řádku
function smaz_radek($vstup, $vystup, $radek_k_vymazu, $konec_radku = "\n")
{
    $jsme_na_radku = 1;                                     // na začátku jsem na 1. řádku
    while (!feof($vstup)) {                                 // čteme, máme-li co číst
        $precteno = fread($vstup, strlen($konec_radku));
        if ($precteno == $konec_radku) {                    // pokud se přečtené shoduje s koncem řádku,
            $jsme_na_radku++;                               // zvýšíme počítadlo řádků
        }
        if ($jsme_na_radku != $radek_k_vymazu) {            // pokud nejsme na řádku, který má být vymazán,
            fwrite($vystup, $precteno);                     // můžeme zapisovat do výstupního souboru
        }
    }
}

// příklad:
$vstupni_soubor = fopen("soubor.txt", "r");
$vystupni_soubor = fopen("vystup.txt", "w");

smaz_radek($vstupni_soubor, $vystupni_soubor, 10); // smaže 10. řádek souboru

fclose($vstupni_soubor);
fclose($vystupni_soubor);
Leopik x
Profil *
Diki! Moc si mi pomohol
krteczek
Profil
šlo by to i pomocí file()
$soubor = "soubor.txt";
$delete= 10;
$del = $delete - 1;# file vytvoří array a první čádek má nulu jako klíč
$a = file($soubor);
unset($s[$del]);
file_put_contents($soubor, join("\n", $a));

udělat z toho funkci je drobnost ;-)
bukaj
Profil
Leopik x
Schválně jsem si udělal test mého a krteczekova řešení. Vyšlo z toho, že moje je mnohokrát (a to opravdu výrazně) pomalejší než jeho, na druhou stranu alespoň spotřebovává méně paměti :) Jelikož pravděpodobnost toho, že budeš pracovat se soubory takové velikosti, že bys překročil paměťový limit je malá, doporučuji tedy použít to krteczekovo.
imploder
Profil
Schválně jsem si udělal test mého a krteczekova řešení. Vyšlo z toho, že moje je mnohokrát (a to opravdu výrazně) pomalejší než jeho, na druhou stranu alespoň spotřebovává méně paměti :) Jelikož pravděpodobnost toho, že budeš pracovat se soubory takové velikosti, že bys překročil paměťový limit je malá, doporučuji tedy použít to krteczekovo.
Jak to poznáš u tak krátkého skriptu?
krteczek
Profil
imploder: mé řešení okamžitě při čtení udělá array ze všech řádků, neprocházím žádným cyklem, jen smažu položku v array, která má hodnotu klíče o jedno menší než je řádek v souboru (soubor nultý řádek nemá) a opět pomocí join a file_put_contents uložím jako text
já bych to řešil ještě tak, že bych ukládal rovnou serializované pole (file_put_contents($soubor, serialize($a))) a načítal také rovnou pole $a = unserialize(file_get_contents($file));
Leopik x
Profil *
OK dakujem vsm vsetkym. Potom ski to uz doladim. Este raz dakujem

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0