Autor Zpráva
sdfg
Profil *
php: vymazani libovolneho radku v souboru
Zeli
Profil
Pardon, chci se jen zeptat, jak mam v php vymazat jen jednu radku v souboru book.dat /1 radka = jeden vzkaz/ ........chci tak bez pomoci FTP klienta odstranovat nesmyslny vzkazy z knihy.

Dekuju za radu.
centi
Profil
Nacitat obsah celeho suboru podla riadkov do pola, cez pole postupne prechadzat a prislusny riadok vynechat, napr takto:


$data = file("subor.txt"); //nacitat obsah suboru do premennej
$newData = ""; //premenna pre nove data bez urceneho riadku

//prejdeme vsetkymi riadkami
for($i=0;$i<count($data);$i++)
{
//vsetky OKREM nechceneho riadku
if ($i!=$cisloNechcenehoRiadku)
{
$newData.=$data[$i];
}
}

//zapiseme nove data
$fp = fopen("subor.txt","w");
fputs($fp,$newData);
fclose($fp);
krteczek
Profil
ješttědoplním že je dobré použít při zápisu oddělovač, protože mi se z text arey zatím nepodařilo dostat v100% případů 1řádek na zprávu.je duležité aby ten oddělovač byl jedinečný, nebo zprávu při odeslání skontrolovat a nechtěný oddělovač bud prevest na entitu, nebo odstranit, a potom ho umístit jako poslední znak zprávy: nejak takhle:

//tady si ošetříš komplet vstup zde jen uvádím jak odstranit a jak přidat oddělovač.
//nejprve skontroluješ všechny poslané proměnné na výskyt oddělovače "|"
$_POST["jmeno"]=str_replace("|"," ",$_POST["jmeno"]);
//jak to overiš u všech proměnných mužeš vytvořit řádek
$novazprava = "<div class=\"prispevek\"><div class=\"info\"><p>nick: " . $_POST["jmeno"] . " " . "<span class=\"datum\">Datum: " . date("d/m/Y H:i:s") . "</span><br>email: " . $_POST["email"] ."</p></div><div class=\"vzkaz\"><p>". $_POST["vzkaz"] ."</p></div></div>"."|\n";
define ("NAZEV_SOUBORU", "data.php");
//otevřeme soubor s příspěvky a načteme ho do pole pomocí funkce file("nazev.souboru");
if (file_exists(NAZEV_SOUBORU))
{
$prispevky=file(NAZEV_SOUBORU);
$i=0;
array_push($prispevky, $novazprava); //přidá příspěvek do pole
while($prispevky[$i])

{
if ($prispevky[$i]!="")
{
$zapis.=$prispevky[$i]; //tímto odstraníme případné prázdné řádky
$i++;
}
}
$soubor=fopen(NAZEV_SOUBORU,"w");
if(fputs($soubor,$zapis))
{
$zprava= "<p class=\"zprava\"> Děkuji, Váš příspěvek byl přidán do knihy návštěv. </p>";
}
else
{
$zprava= "<p class=\"varovani\">Je mi líto, zápis do knihy návštěv se nezdařil. </p>";
}
fclose($soubor);

krteczek
Zelli
Profil *
Diky, vse mi funguje, jak ma:-))
Toto téma je uzamčeno. Odpověď nelze zaslat.

0