Pagina 1 din 1
sterge rand ce contine cuvant
Scris: Sâm Mar 03, 2012
de steell
salut.
1: am de exemplu un fisier txt (sau php nu conteaza asta) in care sunt scrise zeci de linii.
cum fac sa sterg intreg randul care contine un anumit cuvant specificat intr-un formular?
2:cum fac sa sterg spatiile dintr-o propozitie?
ex: "eu merg la scoala" sa iasa "eumerglascoala"
m-am gandit la functia str_replace(), o alta metoda mai stiti?
sterge rand ce contine cuvant
Scris: Dum Mar 04, 2012
de MarPlo
Salut
Ca sa stergi randurile dintr-un fisier, ce contin un anumit cuvant; restul fiind pastrate, poti folosi acest model (cuvantul anumit il preiei cum stii):
Cod: Selectaţi tot
<?php
$str = 'anumit_cuvant';
// preia randurile din "nume_fisier.txt" in array
$ardata = file('nume_fisier.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
$nrows = count($ardata);
// parcurge array-ul, sterge elementele ce contin sirul de la $str
$keepdata = array();
for($i=0; $i<$nrows; $i++) {
if(stripos($ardata[$i], $str) !== false) unset($ardata[$i]);
}
$ardata = array_merge($ardata); // reordoneaza cheile in array
// scrie in 'nume_fisier.txt' randurile ramase
file_put_contents('nume_fisier.txt', implode("\n", $ardata));
?>
Ca sa stergi toate spatiile dintr-un sir, cel mai indicat e cu str_replace(), chiar daca se poate si cu alte functii, aceasta e cea mai rapida.
Exemplu:
Cod: Selectaţi tot
<?php
$str = 'eu merg la scoala';
$str = str_replace(' ', '', $str);
echo $str; // eumerglascoala
?>
sterge rand ce contine cuvant
Scris: Dum Mar 04, 2012
de steell
am incercat scriptul pentru stergere cuvant din fisier dar imi sterge tot ce e in fisier
nu numai randul ce contine cuvantul specificat.
sterge rand ce contine cuvant
Scris: Dum Mar 04, 2012
de MarPlo
Inlocuieste:
Cu acesta:
Sau copie din nou tot codul, fiindca am modificat.
sterge rand ce contine cuvant
Scris: Dum Mar 04, 2012
de steell
functioneaza. insa mai sunt 2 conditii: la sfarsitul continutului fisierului imi dauga un caracter, e ca un patratel cred ca sti cum apare din cauza ca nu stie notepadul ce caracter este. cum fac sa nu apara acest caracter?
si a doua, vreau ca dupa ce adauga noul continut in fisier sa treaca la linie noua la sfarsit dar fara sa scrie ceva pe acea linie adica ca si cum as apasa enter si trece la linie noua, asta pentru ca eu adaug in acel fisier date dintr-un formular si am setat ca fiecare post sa-l treaca pe linie noua asa
Cod: Selectaţi tot
fwrite($handl,'mesaj ce apare in fisier');
fclose()
si imi trece automat un "enter". cred ca ai inteles cam ce as vrea.multumesc
sterge rand ce contine cuvant
Scris: Lun Mar 05, 2012
de MarPlo
Ca sa adaugi caracter de linie noua la un rand, poti folosi:
"\n" (pt. Linux /Unix),
"\r\n" (pt. Windows), sau constanta
PHP_EOL .
Cod: Selectaţi tot
fwrite($handl,'mesaj ce apare in fisier'. PHP_EOL);
Nu stiu ce caracter e acel patratel, probabil ca in PHP e folosit UTF-8, incearca sa adaugi in codul PHP, inainte de linia ce scrie in fisier, header pt. ASCII / ISO:
Cod: Selectaţi tot
header('Content-Type: text/plain; charset=ISO-8859-1');
Daca nu merge cu acest header(), nu stiu altfel.
sterge rand ce contine cuvant
Scris: Lun Mar 05, 2012
de steell
am rezolvat modificand linia asta
Cod: Selectaţi tot
file_put_contents('nume_fisier.txt', implode("\n", $ardata));
cu astea doua
Cod: Selectaţi tot
file_put_contents('nume_fisier.txt', implode("\n", $ardata).'');
si imi trece la rand nou si a disparut si patratelu ala
era chiar simplu da' eram prea obosit atunci sa-mi dau seama.
multumesc pentru script