Šta je novo?

php parser za txt fajl

einstein

Čuven
Učlanjen(a)
19.12.2001
Poruke
1,296
Poena
660
Nisam jos uvek familijaran sa PHP-om. Trebao bi mi PHP parser koji cita iz txt fajla tipa:
1111.jpg - opis slike 1111
1112.jpg - opis slike 1112

Da li neko ima ideju?
 
Navedi tacan format fajla i kakav output zelis.
 
Znaci format nije bitan, moze ovako kako sam naveo, moze xml, s obzirom da ga ja pisem. Kako je najlakse. Znaci ja u okviru nekog php-a imam ime slike(kao $imagelist[$i]), a umesto toga hocu da stavim opis. Znaci trebao bi da pretrazim taj fajl kakav god bio i da zamenim ime slike sa opisom.
 
Kod:
<?php
$niz_redova=array();
$res=@fopen("fajl.txt","r"); //Otvara fajl za citanje, tako sto postavi pointer na pocetak fajla, mozes da koristis i r+ umesto r, onda ces moci i da pises u file, ovako je readonly
if ($res){
	while (!feof($res)){ // Vrti do kraja fajla	
		$bufer = fgets($res, 4096); // Cita liniju.
		array_push($niz_redova,$bufer); //Dodaje liniju tj. novi element na kraj niza
	}
        //Ispisuje niz
	echo "<pre>";
	print_r($niz_redova);
	echo "</pre>";
}
?>

Malo kasnim 🙂

Ako sam te dobro razumeo, ovo bi trebalo da bude to ili bar da te postavi na dobar put.
 
Poslednja izmena:
Ma malo sam prepravio za moju upotrebu pa je ispalo:

Kod:
function getString($picNumber) {
    $niz_redova=array();
	$res=@fopen("comments/noc/comments.txt","r"); //Otvara fajl za citanje, tako sto postavi pointer na pocetak fajla, mozes da koristis i r+ umesto r, onda ces moci i da pises u file, ovako je readonly
	if ($res){
		while (!feof($res)){ // Vrti do kraja fajla	
			$bufer = fgets($res, 4096); // Cita liniju.
			array_push($niz_redova,$bufer); //Dodaje liniju tj. novi element na kraj niza
		}
			//Ispisuje prvu liniju
            
        foreach($niz_redova as $red) {
            list($key, $valueOfString) = split('=', $red);
            if ($key==$picNumber) $vrednost=$valueOfString;
        }
		return $vrednost;
	}
}

i to mi vrsi posao, dobija ime slike i nalazi opis iz navedenog txt fajla za doticnu sliku.
 
Jedini potencijalni problem ovde moze da ti bude ako u $red imas vise od 1 znaka = . Mislim da nece doci do sintaksne greske, ali ce sigurno doci do semanticke.
 
Hm jedna cudna stvar. Desava mi se na jednoj strani da nece da iscita prvi string (ime slike=string), samo za prvu sliku, a na drugoj strani hoce. A upravo sam provalio zasto. Zbog paging-a. Kada su sve slike na jednoj strani onda radi ok (prikazuje se na prvoj slici), a kada mi php napravi vise strana (kada ne mogui sve slike da stanu na jednu stranu) onda se javlja doticni problem. Takodje tada nece da radi i ako se zamene mesta u txt fajlu (ako ne idu redom kao slike). Da li imas ideju kako to da prevazidjem?
 
Malo mi je konfuzno objasnjenje dok ne vidim code, ali ti ne smes da menjas raspored jer ti se sve ispred = upisuje u $key, a sve iza u $valueOfString. Takodje u 1 liniji mora da bude jedna kombinacija $key = $valueOfString, u suprotnom javice se semanticka greska, kao sto je kraft rekao.

Ako mozes postavi code negde da vidimo konkretno problem.
 
Kod je iznad postavio sam ga. Ako mislis na kod za paging mogu da ga okacim on je 10kb. Sto se tice menjanja redosleda nisi lepo shvatio.

Kod:
101.jpg=Bela rada 1 :)
102.jpg=Bela rada 2 :)
103.jpg=Žbun 1
104.jpg=Žbun 1 ponovo
105.jpg=Žbun 2 drugi plan
106.jpg=Žbun 2 prvi plan
107.jpg=Neki cvet
108.jpg=Savinac poljanče
109.jpg=Takovo
110.jpg=Beršići 1
111.jpg=Beršići 2
112.jpg=Buba 1
113.jpg=Ljubičica
114.jpg=Maslačak

Kod:
102.jpg=Bela rada 2 :)
101.jpg=Bela rada 1 :)
103.jpg=Žbun 1
104.jpg=Žbun 1 ponovo
105.jpg=Žbun 2 drugi plan
106.jpg=Žbun 2 prvi plan
107.jpg=Neki cvet
108.jpg=Savinac poljanče
109.jpg=Takovo
110.jpg=Beršići 1
111.jpg=Beršići 2
112.jpg=Buba 1
113.jpg=Ljubičica
114.jpg=Maslačak


Njemu bi trebalo da bude svejedno da li je u txt fajlu napisano na prvi ili drugi nacin posto cita ceo fajl i stavlja stringove u niz, i onda ide kroz niz i trazi isti (e sad ocigledno ima veze zbog paginga).

evo ga ceo kod u atachu Pogledajte prilog fajl.txt
 
Poslednja izmena:
Hmm, aj ti umesto split stavi explode, posto je split od 5.3 DEPRECATED funckcija a od 6.0 je vise nece biti, pa javi da li je sad ok.
 
Hvala na primedbi, promenio sam. Usput sam ponovo probao nesto i pronasao interesantnu stvar. Radi ok, i sa split, i sa explode, ali kada je prvi red slobodan (inace radi ok, bez obzira na to, ako su sve slike na jednoj strani) ?! Kakve to ima veze ne razumem 🙁 Takodje ono sto sam naveo za zamenu mesta redova u txt fajlu radi, zasto ranije nije, ko zna.
 
Poslednja izmena:
Zamena mesta redova ne bi trebala da ima ikakve posledice po radi parsera, on ide red po red, ali ako zamenis mesta u redu, npr. ono sto je levo stavis desno i obrnuto, onda ce doci do semanticke greske. To se desava zato sto ono sto ti vraca funkcija explode cuvas respektivno u promenjive preko list funkcije.
 
Razumem ja to ali to se desavalo u jednom trenutku, zato sam i bio :bottle:. Ali sad je to ok. Samo me cudi taj prvi red koji preskace zbog paginacije nesto 😡
 
Imas kod za paginaciju gore okacen, post 15 (fajl.txt nije htelo php)
 
Nazad
Vrh Dno