Thread View: pl.comp.lang.php
18 messages
18 total messages
Started by VipeR
Fri, 24 Aug 2001 09:15
Jak usunac wiersz?
Author: VipeR
Date: Fri, 24 Aug 2001 09:15
Date: Fri, 24 Aug 2001 09:15
21 lines
1325 bytes
1325 bytes
Wiem, ze to pytanie wyda sie niektorym trywialne, ale tym latwiej mysle bedziecie mogli mi pomoc. Otoz zalozmy, ze mam plik tekstowy: Linia1 Linia2 Linia3 i chcialbym usunac Linie 2 tak, aby otrzymac Linia1 Linia3 Probowalem str_replace, ale wtedy miedzy Linia1 i Linia3 pojawia sie odstep. Prosze o pomoc, tylko nie typu "Zajrzyj do manuala", w koncu po to chyba jest ta grupa, zeby sobie wzajemnie pomagac, huh? pozdr, VIpeR
Re: Jak usunac wiersz?
Author: bzdurqa
Date: Fri, 24 Aug 2001 09:33
Date: Fri, 24 Aug 2001 09:33
15 lines
1435 bytes
1435 bytes
VipeR <viper@demo.pl> napisał:
> Otoz zalozmy, ze mam plik tekstowy:
> Linia1
> Linia2
> Linia3
> i chcialbym usunac Linie 2
chcesz usunąć tekst 'Linia 2', drugą linię w pliku, a może co drugą linię?
w pierwszym przypadku str_replace zadziała, ale pamiętaj, że po 'Linia2'
jest jeszcze (niewidoczny) znak końca linii '\n' lub '\r\n'.
opcja nr 2 i 3 - robisz licznik linii przy czytaniu z pliku i odpowiednim
if'em eliminujesz niepożądane linie:
if($cnt!=2) { // dla nieparzystych linii: if (!($cnt%2))
// rób coś z linią
}
bzd.
Re: Jak usunac wiersz?
Author: Tomasz Nidecki
Date: Fri, 24 Aug 2001 09:36
Date: Fri, 24 Aug 2001 09:36
18 lines
1977 bytes
1977 bytes
In article <9m5658$ph0$1@news.tpi.pl>, "VipeR" <viper@demo.pl> wrote: > Probowalem str_replace, ale wtedy miedzy Linia1 i Linia3 pojawia sie > odstep. Wczytujesz plik do tablicy (po jednej linii do komorki) i usuwasz z tablicy komorke, potem zapisujesz z powrotem - to jedno rozwiazanie mozliwe :). Mozesz tez wziac pod uwage \n przy str_replace przeciez (i w searchowanym i w replace'owanym). -- tomasz 'tonid' nidecki, zoliborz, warszawa, poland mailto:tonid@tonid.net http://endemic.tonid.net Duct tape is like the force. It has the light side, the dark side and keeps the universe together... PGP: 11E3 2772 7E95 8962 F932 7FAA 72F2 4CCC 1C70 DB83
Re: Jak usunac wiersz?
Author: VipeR
Date: Fri, 24 Aug 2001 09:41
Date: Fri, 24 Aug 2001 09:41
27 lines
1965 bytes
1965 bytes
No wlasnie mam na mysli pozbycie sie znaku \n
W moim skrypcie mam cos takiego:
$fp = fopen($download_log, "w");
$x = str_replace($usun,"", $x);
flock($fp,2);
$fw = fwrite($fp, $x);
flock($fp,3);
fclose($fp);
I str_replace zastepuje wyszukany przez skrypt string $usun pusta linia.
Tylko jak potem jeszcze usunac ta linie, aby wszystkie znajdujace sie pod
nia
przesunely sie do gory?
pozdr,
VipeR
> chcesz usunąć tekst 'Linia 2', drugą linię w pliku, a może co drugą linię?
> w pierwszym przypadku str_replace zadziała, ale pamiętaj, że po 'Linia2'
> jest jeszcze (niewidoczny) znak końca linii '\n' lub '\r\n'.
> opcja nr 2 i 3 - robisz licznik linii przy czytaniu z pliku i odpowiednim
> if'em eliminujesz niepożądane linie:
> if($cnt!=2) { // dla nieparzystych linii: if (!($cnt%2))
> // rób coś z linią
Re: Jak usunac wiersz?
Author: bzdurqa
Date: Fri, 24 Aug 2001 09:56
Date: Fri, 24 Aug 2001 09:56
4 lines
1033 bytes
1033 bytes
VipeR <viper@demo.pl> napisał: > $x = str_replace($usun,"", $x); $x = str_replace($usun."\n", "", $x); bzd.
Re: Jak usunac wiersz?
Author: 7th Wojciech Jukowski
Date: Fri, 24 Aug 2001 10:04
Date: Fri, 24 Aug 2001 10:04
14 lines
1166 bytes
1166 bytes
witam,
VipeR wrote:
> i chcialbym usunac Linie 2 tak, aby otrzymac
hmm na server-side kiedys puscilem:
if(isset($nr)){$tmp=0;$F=file('plik.input');$P=fopen('plik.input','w');
for(;$tmp<sizeof($F);)if(++$tmp!=$nr)fwrite($P,$F[$tmp-1]);fclose($P);}
usuwa linie o numerze $nr z pliku 'plik.input'.
--
wojciech.jukowski
Re: Jak usunac wiersz?
Author: jcebo
Date: Fri, 24 Aug 2001 10:49
Date: Fri, 24 Aug 2001 10:49
8 lines
1065 bytes
1065 bytes
użyj zamiast str_replaca, ereg_replace i usuwaj nie "linia 2" tylko "linia 2\n" jcebo [ www.graf-komp.win.pl ] -- Wysłano z serwisu OnetNiusy: http://niusy.onet.pl
Re: Jak usunac wiersz?
Author: 2ker
Date: Fri, 24 Aug 2001 11:38
Date: Fri, 24 Aug 2001 11:38
18 lines
1400 bytes
1400 bytes
jcebo@poczta.onet.pl wrote: > > uzyj zamiast str_replaca, ereg_replace i usuwaj nie "linia 2" tylko "linia 2\n" > regexy sa duzo wolniejsze od zwyklego str_replace, a poza tym jezeli to jest log (tj. duzy plik) to raczej sugerowalbym nie wczytywac calosci na raz do pamieci, tylko czytac plik po linii np. przez fgets(), potem obciac "white space" z konca przez chop(), porownac i jesli linia jest ok to ja zpisywac do nowego pliku. Na koncu robisz rename() (z ewentualnym wczesniejszym backupem) i juz. -- 2ker uin: 5901548
isset [bylo : Re: Jak usunac wiersz?]
Author: MySZ
Date: Fri, 31 Aug 2001 00:13
Date: Fri, 31 Aug 2001 00:13
11 lines
1212 bytes
1212 bytes
> if(isset($nr))
> --
> wojciech.jukowski
pytanie odnosnie isset - co daje jej stosowanie? bo ja w wielu przypadkach
robilem tak, ze dawalem po prostu if ($zmienna) {rob co trza} elseif
(!$zmienna) {rob co innego}
jaka jest roznica???
sorry za lameriade ;)
MySZ
Re: isset [bylo : Re: Jak usunac wiersz?]
Author: Piotr Kęplicz
Date: Fri, 31 Aug 2001 08:52
Date: Fri, 31 Aug 2001 08:52
20 lines
1823 bytes
1823 bytes
MySZ <msztol@poczta.onet.pl>:
: pytanie odnosnie isset - co daje jej stosowanie? bo ja w wielu przypadkach
: robilem tak, ze dawalem po prostu if ($zmienna) {rob co trza} elseif
: (!$zmienna) {rob co innego}
: jaka jest roznica???
Różnica ujawnia się w momencie, w którym chcesz rozróżnić czy
zmienna została w ogóle ustawiona, czy też ma wartość 0.
Co więcej, isset() bardzo się przydaje przy sprawdzaniu danych z
formularzy z przyciskami w postaci grafik. Przeglądarka graficzna
przekaże Ci współrzędne miejsca kliknięcia przycisku, ale np. Lynx
ustawi obie współrzędne na 0, i co wtedy?
BTW, naprawdę używasz konstrukcji typu:
if ($zmienna) ...; elseif (!$zmienna) ....; ?
-- ||
||)) ||<< ==> Nowy Polski Słownik Pijacki ==> http://pijacki.ez.pl/
||
,,Always look on the bright side of death...''
Re: isset [bylo : Re: Jak usunac wiersz?]
Author: MySZ
Date: Fri, 31 Aug 2001 09:20
Date: Fri, 31 Aug 2001 09:20
14 lines
1579 bytes
1579 bytes
> Różnica ujawnia się w momencie, w którym chcesz rozróżnić czy
> zmienna została w ogóle ustawiona, czy też ma wartość 0.
czaje, na priv jush dostalem wyjasnienie, dzieki :)
> BTW, naprawdę używasz konstrukcji typu:
> if ($zmienna) ...; elseif (!$zmienna) ....; ?
acha, pare razy mi to starczylo :) of koz proste zastosowania, typu czy
strona ma wyswietklic formularz, czy wykonac dzialanie (przesylam zmienna,
jesli nie istnieje to forma, jak istnieje to wykonuje zadanie :)
moshe i niewlasciwie/zle, ale dziala ;))))
MySZ
Re: isset [bylo : Re: Jak usunac wiersz?]
Author: leming nine
Date: Fri, 31 Aug 2001 09:23
Date: Fri, 31 Aug 2001 09:23
9 lines
1108 bytes
1108 bytes
> BTW, naprawdę używasz konstrukcji typu: > if ($zmienna) ...; elseif (!$zmienna) ....; ? Niestety, już kilkukrotnie spotkałem się z taką manierą w różnych tutorial'ach (nie pamiętam nawet gdzie i kiedy). To bardzo zły nawyk. -- l9
Re: isset [bylo : Re: Jak usunac wiersz?]
Author: Darek Sieradzki
Date: Fri, 31 Aug 2001 09:32
Date: Fri, 31 Aug 2001 09:32
31 lines
2072 bytes
2072 bytes
" MySZ" <msztol@poczta.onet.pl> wrote in news:9mnksh$d9v$1@news.tpi.pl:
>> BTW, naprawdę używasz konstrukcji typu: if ($zmienna) ...; elseif
>> (!$zmienna) ....; ?
>
> acha, pare razy mi to starczylo :) of koz proste zastosowania, typu czy
> strona ma wyswietklic formularz, czy wykonac dzialanie (przesylam
> zmienna, jesli nie istnieje to forma, jak istnieje to wykonuje zadanie
> :) moshe i niewlasciwie/zle, ale dziala ;))))
To ja podkrece jasnosc :-)
Piotrkowi chodzilo o subtelna roznice miedzy:
if ($zmienna) {...} elseif (!$zmienna) {...}
a konstrukcja:
if ($zmienna) {...} else {...}
Nie ma sensu stosowac tej pierwszej, a dodatkowo mozna sie pogubic, jesli
"$zmienna" to nie jest prosta zmienna, tylko wyrazenie (hint: jego wartosc
bedzie obliczona raz jesli wynik jest true i dwa razy jesli false).
DS
--
.---------
(-- a dny jak padli andele prsty ryji hlinu --. .
` `-- a dni jak upadle anioly palcami ryja ziemie --)
---------'
http://www.dago.pmp.com.pl
Re: isset [bylo : Re: Jak usunac wiersz?]
Author: MySZ
Date: Fri, 31 Aug 2001 09:39
Date: Fri, 31 Aug 2001 09:39
9 lines
1330 bytes
1330 bytes
> To ja podkrece jasnosc :-)
> Piotrkowi chodzilo o subtelna roznice miedzy:
czaje :) akurat tak napisalem, z rozpedu. (chyba ze chodzi o cos jeszcze
wiecej, niz else/elseif ;)
> DS
MySZ
Re: isset [bylo : Re: Jak usunac wiersz?]
Author: MySZ
Date: Fri, 31 Aug 2001 09:39
Date: Fri, 31 Aug 2001 09:39
14 lines
1470 bytes
1470 bytes
> Niestety, już kilkukrotnie spotkałem się z taką manierą
> w różnych tutorial'ach (nie pamiętam nawet gdzie i kiedy).
no ja nie z tutoriala, akurat potrzebowalem cos takiego, a nie znalemm wtedy
isset w ogole ;)
> To bardzo zły nawyk.
czemu zly? oprocz tego, ze czasem moze oszukac jesli operuje sie na
wartosciach zmiennych true/false a nie jak w moim przypadku na stringach ;))
> l9
MySZ
Re: isset [bylo : Re: Jak usunac wiersz?]
Author: leming nine
Date: Fri, 31 Aug 2001 10:50
Date: Fri, 31 Aug 2001 10:50
49 lines
2394 bytes
2394 bytes
> > if(isset($nr))
> pytanie odnosnie isset - co daje jej stosowanie?
isset() zwraca prawdę, jeśli taka zmienna istnieje.
Bardzo się przydaje w momencie, kiedy sprawdzasz, czy
pole z formularza zostało przesłane.
> bo ja w wielu przypadkach robilem tak, ze dawalem
> po prostu
> if ($zmienna) {
> rob co trza
> } else if (!$zmienna) {
> rob co innego
> }
Niepotrzebnie się biedzisz, lepiej zamiast fragmentu
} else if (!$zmienna) {
napisać po prostu:
} else {
:) I na dodatek bardzo źle robiłeś, zresztą...
> jaka jest roznica???
...no właśnie. Różnica jest diametralna. W PHP wartości
logiczne są dla if'ów jednoznaczne z numerycznymi - 0 i 1.
Dokładniej: true i 1 to to samo. false i 0 również.
Dlatego polecam stosowanie operatorów `===' oraz `!=='.
One dbają o typy, toteż mniej błędów wychodzi.
Co do danych przesyłanych za pomocą formularzy -- warto
jest poza isset($foo) sprawdzać jeszcze pochodzenie takiej
zmiennej - czy została ona przesłana metodą GET czy POST.
Czyli jeśli np. zmienną jest hasło, to aby uniknąć jawnego
podawania hasła metodą GET (wtedy będzie w TransferLog'u
Apache'a) sprawdzaj, czy dane zostały przesłane za pomocą
if (isset($HTTP_POST_VARS["haslo"])), ponieważ inaczej jest
dziura. Czasami w cookies można coś takiego zawrzeć, ech,
szkoda gadać jakie rożne dziwne rzeczy od tego się robią...
Właśnie z powodu takich nie do końca ścisłych operacji
niedoświadczeni programiści PHP mają problemy.
--
l9
Re: isset [bylo : Re: Jak usunac wiersz?]
Author: leming nine
Date: Fri, 31 Aug 2001 10:56
Date: Fri, 31 Aug 2001 10:56
20 lines
1773 bytes
1773 bytes
> > To bardzo zły nawyk. > czemu zly? oprocz tego, ze czasem moze oszukac jesli > operuje sie na wartosciach zmiennych true/false a nie > jak w moim przypadku na stringach ;)) Programista powinien być w stanie przewidzieć dokładnie wynik działania swojego programu. Jeśli nie jest w stanie określić ogólnie co będzie wynikiem oznacza to, że tak właściwie nie ma kontroli nad programem, który napisał. To samo oczywiście tyczy się wszelkiej maści skryptów. Jeśli skrypt nie kontroluje np. pochodzenia zmiennych, script kiddies są w stanie go wykorzystać do wywoływania skutków niepożądanych przez autora skryptu. Oczywiście, jeśli skrypt jest na prawach użytkownika nobody/www-data i tak zbyt wiele nie da się "naszczekać", jednak IMO takie możliwości powinno się zawsze blokować. -- l9
Re: isset [bylo : Re: Jak usunac wiersz?]
Author: MySZ
Date: Fri, 31 Aug 2001 11:05
Date: Fri, 31 Aug 2001 11:05
9 lines
1310 bytes
1310 bytes
> Właśnie z powodu takich nie do końca ścisłych operacji
> niedoświadczeni programiści PHP mają problemy.
a jak maja problemy, to siem pytaja na grupach ;)))) ok, dzieki bardzo :)))
zaraz troche skrypty pozmieniam ;))))
> l9
MySZ
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads