[ M_B @ 01.06.2005. 11:45 ] @
| Ima li nekoga u ovoj nasoj maloj drzavi ko bi mogao da mi pomogne da razbijem tekst na redove, tekst se sastoji iz sql naredbi, komentara i praznih redova, npr:
#DB backup
INSERT ... ;
INSERT ... ;
svatate sta hocu da kazem... Svaki red se zavrsava sa ";", ali je moguce da se taj znak pojavi i pre, tako da to ne mogu da koristim.
Ovaj tekst kad se razdvoji na redove daje se MySQL-u da ga izvrsi, tako da bi bilo:
$linesCount - broj redova
$currentLine - trenutni red, npr. $lines[$i].
for ($i = 0; $i < $linesCount; $i ++){
if (($currentLine[1] != '') && ($currentLine[1] != ' ') && ($currentLine[1] != '#')){
mysql_query($currentLine) or die(musql_error());
}//if
}//for |
[ kIGUAR @ 01.06.2005. 12:29 ] @
Kako si dobio broj linija u file-u. Nemoj brojati znak ; nego broji koliko ima \n i taj broj dodijeli varijabli.
\n je znak za novi red.
[ M_B @ 01.06.2005. 12:37 ] @
Ja znam da je \n znak za novi red kad ja kucam tekst, ali nisam znao da ce da ga prepozna u vec iskucanom tekstu.
Jel si siguran da to moze, evo deo fajla:
# DB Backup 1.6.2005
INSERT INTO mxtrack_category VALUES("1","Delphi Components");
INSERT INTO mxtrack_category VALUES("2","Programs");
[ kIGUAR @ 01.06.2005. 12:56 ] @
Može. Unix fileovi i windows imaju neke razlike, ali mislim da je taj jednak.
Newline Character je ključna riječ po kojoj ćeš tražiti da budeš siguran. Ja sam tako radio neki script koji je izvršavao neku operaciju za vrijednost koja se nalazila u pojedinom retku.
[ M_B @ 01.06.2005. 14:01 ] @
Jos samo jedno pitanje, sta ako \n ima negde pre jer se u bazu smestaju cak i cele diskusije, kako da znam da se \n nalazi na kraju linije, da trazim ;\n ???
[ BraMom @ 01.06.2005. 22:39 ] @
Pregledaj malo PHP manual, ima svakojakih f-ja za parsiranje stringova,
ne moras da hardkodiras.
Za tvoj problem moze da posluzi
explode ( string separator, string string [, int limit] )
a moze i
split ( string pattern, string string [, int limit] )
pattern je "regular expression pattern", pa moze pomoci oko izdvajanja SQL od djubreta, mada ne vidim zasto bi se u istom fajlu (stringu) nalazio SQL i djubre
Kraj reda kod unix fajlova je \r\n, a kod windows-a \n
Elem
aLines = explode(lines, "\r\n")
ti vraca sve redove stringa u niz, a posle kako ti volja
[ M_B @ 01.06.2005. 22:51 ] @
I koristim explode, nasao sam nacin da to uradim, samo mi nije jasna ta razlika windows-unix, ako koristim \r\n jel ce da radi kod oba?
[ BraMom @ 01.06.2005. 23:19 ] @
Mislim da nece, ali uvek mozes da uradis
str_replace("\r\n", "\n", string);
i svejedno kakav je ulaz bio sada imas samo \n na kraju reda.
[ M_B @ 01.06.2005. 23:30 ] @
Vidis, to je veoma pametna ideja :)
Hvala puno!
pogldaj za sta to koristim (ako te zanima) na
http://mxs.bergsoft.net/tracker
[ The Sekula @ 02.06.2005. 08:43 ] @
Ako ti je tekst u fajlu, pogledaj funkciju file(), ona ce ti to sama odraditi sto ti treba, s tim sto ce ocuvati i new like karaktere u izvornom obliku.
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.