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
-
- Mesaje:190
sterge rand ce contine cuvant
MarPlo
Mesaje:4343
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):
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:
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));
?>
Exemplu:
Cod: Selectaţi tot
<?php
$str = 'eu merg la scoala';
$str = str_replace(' ', '', $str);
echo $str; // eumerglascoala
?>
steell
Mesaje:190
am incercat scriptul pentru stergere cuvant din fisier dar imi sterge tot ce e in fisier
nu numai randul ce contine cuvantul specificat.
nu numai randul ce contine cuvantul specificat.
MarPlo
Mesaje:4343
Inlocuieste:
Cu acesta:
Sau copie din nou tot codul, fiindca am modificat.
Cod: Selectaţi tot
if(stripos($ardata[$i], $str) >= 0)
Cod: Selectaţi tot
if(stripos($ardata[$i], $str) !== false)
steell
Mesaje:190
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
si imi trece automat un "enter". cred ca ai inteles cam ce as vrea.multumesc
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()
MarPlo
Mesaje:4343
Ca sa adaugi caracter de linie noua la un rand, poti folosi: "\n" (pt. Linux /Unix), "\r\n" (pt. Windows), sau constanta 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:
Daca nu merge cu acest header(), nu stiu altfel.
Cod: Selectaţi tot
fwrite($handl,'mesaj ce apare in fisier'. PHP_EOL);
Cod: Selectaţi tot
header('Content-Type: text/plain; charset=ISO-8859-1');
steell
Mesaje:190
am rezolvat modificand linia asta
cu astea doua
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
Cod: Selectaţi tot
file_put_contents('nume_fisier.txt', implode("\n", $ardata));
Cod: Selectaţi tot
file_put_contents('nume_fisier.txt', implode("\n", $ardata).'');
era chiar simplu da' eram prea obosit atunci sa-mi dau seama.
multumesc pentru script