Ne pronađe linije u datoteci

Autor erbi, 05. Rujan 2014, 12:38

0 Članovi i 2 Gosti pregledava ovu temu.

erbi

Pozdrav!
Jedan mali problem. Imam .php skriptu, koja radi ovako:
otvori 2014-09-02.txt, i zapamti si prvu liniju
otvori 2014-09-01.txt, pronađe liniju u kojoj je ovo što ti je zamamtio iz prve datoteke
onda iz 2014-09-01.txt prepiše sve u drugu datoteku. Počne u prvi liniji, ta završi u liniji, gdje prije pronašao.
primjer:
Citat:
2014-09-02
1 podatak
2 podatak
3 podatak
4 podatak

2014-09-01
99 podatak
98 podatak
1 podatak
25 podatak

U izpis če tako iči:
99 podatak
98 podatak
1 podatak

Sada ova skripta ne radi, jer ima u prvom redu 2014-09-02 čć, pa iako je & ne radi.

Hvala na pomoči.

Dario

Moram priznat da baš ne kužim... ima & ili naše znakove u prvom redu ?
Iako zbog ovoga nebi php pucao nikako, pa bi trebalo to malo bolje objasnit....
---
Molim da mi ne šaljete privatne poruke sa zahtjevima za pomoć, takve poruke ignoriram - zato služi forum :)
2b || !2b; this.question();
http://www.dblaze.eu

erbi

Najprije traži prvi red u datoteci 2. Ako je tamo recimo
Citat:Tomislav Ivcic - nesto
je OK
ali ako ima
Citat:Tomislav Ivčić - Neš
ili
Tomislav Ivcic - Nesto & nesto
Ne radi

Dario

Daj da vidimo php kod..... ja sam iskreno i kineski jezik već parsal s php-om i nikad nisam imal nikakvih problema, a najmanje da mi puca skripta zbog toga... Ja bi ipak reko da je negdje drugdje u skripti problem pa puca na drugom mjestu....
---
Molim da mi ne šaljete privatne poruke sa zahtjevima za pomoć, takve poruke ignoriram - zato služi forum :)
2b || !2b; this.question();
http://www.dblaze.eu

erbi

php kod je u privitku, prvi post (sazas007.php)

erbi

Niko nezna gdje u php je greška?

Onebeat

Citat: erbi  u 14. Rujan 2014, 12:38
Niko nezna gdje u php je greška?

Koliko sam ja shvatio ti zelis da iz 2014-09-02 datoteke pročita prvi red te onda otvori drugu datoteku i onda...što ?
Truth will set you free

erbi

Iz 2014-09-02 pročita prvi red i si ga zapamti
Otvori 2014-09-01 i pronađe red u kojem je ovaj zapamčen
Onda copy iz 2014-09-01 u novu datoteku, sve od prvog reda, do reda gdje je pronašao zapamčeno
I tako ide za cjeli mjesec

Onebeat

Citat: erbi  u 15. Rujan 2014, 08:29
Iz 2014-09-02 pročita prvi red i si ga zapamti
Otvori 2014-09-01 i pronađe red u kojem je ovaj zapamčen
Onda copy iz 2014-09-01 u novu datoteku, sve od prvog reda, do reda gdje je pronašao zapamčeno
I tako ide za cjeli mjesec

Pogledaj jel ti ovo ok ?
Truth will set you free

erbi

sada mi u izpis.txt baci samo prvi red iz 2014-09-01, a ne sve do ovog reda, kojeg je pronašao u 2014-09-02

Onebeat

Citat: erbi  u 15. Rujan 2014, 09:24
sada mi u izpis.txt baci samo prvi red iz 2014-09-01, a ne sve do ovog reda, kojeg je pronašao u 2014-09-02

U koju svrhu koristis uopce ovu skriptu ?

Skripta mi je pokazivala da nije definirana varijabla posljedni_red pa sam je definirao i pogledao sto se dogada sa skriptom.
Truth will set you free

erbi

Ova skripta služi za ispis. Svaki dan je kreirana playlista u neki txt. Recimo, da se u 23:59:59 završi sa linijom 50, drugi dan je prvi red 51. Program za play, kopira drugi dan sve od prve linije do poslednje u jedan txt.
Sad imamo prvi dan sa 100 linija, a drugi dan isto sa 100 linija. Skripta mora sada pronači prvi red u drugom danu, si ga zapamtiti, i u treči txt kopirati sve od prve linije do ovog zapamčenog podatka. Sve nadalje nije bitno, jer je ide u drugi dan in je u txt-2.

Citat:Skripta mi je pokazivala da nije definirana varijabla posljedni_red pa sam je definirao i pogledao sto se dogada sa skriptom.
Varijabla nije definisana zbog toga, jer ima u 2014-09-02 č i ć. Ako tega ne bi bilo, varijabla je normalno definirana. I baš ovdje je greška


Onebeat

Definirao sam vijednost te varijable da bude null te sam onda otvorio text file koji imas te ih prebacio u UTF-8 jer su bili ASCII

Jel ti sada radi skripta ?
Truth will set you free

erbi

Ako prebacim 2014-09-01 i 2014-09-02 u utf8, onda skripta radi. Jel postoji kakav način, da bi ovo radilo i sa ascii?

Onebeat

Citat: erbi  u 15. Rujan 2014, 10:00
Ako prebacim 2014-09-01 i 2014-09-02 u utf8, onda skripta radi. Jel postoji kakav način, da bi ovo radilo i sa ascii?

Preporučam ti da napravis ovako - svaki put kada skripta se pokrene neka prvo pretvori datoteke u UTF8 pa te napravi overwrite te onda ide dalje ostatak skripte.
Truth will set you free

erbi


Dario

#16
Citat: Onebeat  u 15. Rujan 2014, 10:05
Preporučam ti da napraviš ovako - svaki put kada skripta se pokrene neka prvo pretvori datoteke u UTF8 pa te napravi overwrite te onda ide dalje ostatak skripte.

Ni u ludilu to radit.... i onda overwrite-aš originalnu datoteku, a nekaj ne valja -  i gdi si onda?

Jednostavno kad učitaš sadržaj u varijablu

$fp = @fopen($filename_danas, 'r');


obradi taj tekst u varijabli. Budući da vidim da sve nešto svoje učitavaš, dakle uvijek će dolaziti datoteka u istom formatu snimljena, napraviš samo

$fp = iconv('ASCII', 'UTF-8//IGNORE', $fp);

... i trebalo bi radit...
---
Molim da mi ne šaljete privatne poruke sa zahtjevima za pomoć, takve poruke ignoriram - zato služi forum :)
2b || !2b; this.question();
http://www.dblaze.eu

Onebeat

Citat: Dario  u 16. Rujan 2014, 14:02
Ni u ludilu to radit.... i onda overwrite-aš originalnu datoteku, a nekaj ne valja -  i gdi si onda?

Slican princip koji sam tu napisao koristim kod jednog svog rješenja i nemam nikakvih problema jer ako nesto dobro slozis onda ide glatko...
Truth will set you free

erbi

@Dario:
Ovaj convert sam pokušao, a ne radi. Zanimljivo je to, da kad otvorim datoteku sa editorom, kaže mi da je format ANSI, a kad jo otvorim sa php, kaže da je utf-8

Nešto sam brklao i liniju:

if (strpos(htmlspecialchars($line), $prvi_next_day) !== false)

promjenio u:

if (strpos($line, $prvi_next_day) !== false)

i radi. Možda samo za sada i mi opet javi grešu kad budem u gužvi  ;D