Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 22
  1. #1
    Utente di HTML.it L'avatar di bart87
    Registrato dal
    Apr 2004
    Messaggi
    184

    Problema strano per leggere un file

    Ciao a tutti, sto scrivendo un parser xml e ho creato questo metodo per leggere il file in questione e strutturarlo in un array in modo che ogni posizione corrisponda ad una riga (ad esempio $this->struct[1] contiene la prima riga del file etc.).

    Codice PHP:
    function xml($file){
                    
    $this->file $file;
                    
    $res fopen($file "r");
                    
    $i 1;
                    while (!
    feof($res)){
                    
    $lines[$i] = fgets($res);                
                    
    $i $i 1;
                                       }
                    
    $this->struct $lines;                
                               } 
    E' sempre andato tutto bene finchè, testando la classe per un altro metodo cercando di leggere il file xml di prova

    codice:
    <taga>
        <tagb>
        	<tagc />
        </tagb>
        <tagc />
    </taga>
    Mi sono accorto che il metodo mi salva questa roba nell'array:

    codice:
    Array
    (
        [1] =&gt; <taga>
    
        [2] =&gt;     <tagb>
    
        [3] =&gt;     	<tagc>
    
        [4] =&gt;     </tagc>
    
        [5] =&gt;     <tagc>
    
        [6] =&gt; </tagc>
    )
    E' molto strano, sto sviluppando il parser da tempo e finora mi ha sempre letto correttamente tutti i file di prova fatti, non riesco proprio a capire..
    Spero di essere stato chiaro.
    Un megaringraziamento anticipato a chi sapesse aiutarmi
    Nunc Bibendum est!

  2. #2

    Re: Problema strano per leggere un file

    allora.. in primis qualche consiglio su questa funzione:
    Codice PHP:
    function xml($file){
                    
    $this->file $file;
                    
    $res fopen($file "r");
                    
    fseek($res,0); //ti assicuri di essere all'inzio
                    
    $i 1;
                    while (!
    feof($res))
                    {
                    
    $lines[$i] = fgets($res);                
                    
    $i++; //più corto :D
                    
    }
                    
    fclose($res); //sempre meglio chiudere i file usati
                    
    $this->struct $lines;                
                               } 
    poi $gt; è iol simbolo di >
    e l'output dovrebbe essere

    Array{
    [1] => valore1
    [2] => val2
    }

    il valore quindi dovrebbe essere solo una codifica in HTML..

    ciaociao

    ..IcE..
    visit the BEST italian fotolog http://www.ghiacciato.it/fotolog

    "Solo due cose sono infinite, l'universo e la stupidità dell'essere umano.. ma sulla prima ho ancora delle riserve.." A.Einstein

  3. #3
    Utente di HTML.it L'avatar di bart87
    Registrato dal
    Apr 2004
    Messaggi
    184
    Il file non lo chiudo perché poi mi serve ancora per scrivere/modificare
    Non ho capito bene l'ultima parte..
    Cmq l'output che ho postato lo leggo solo se salvo il file html e lo apro con un editor di testo, chiaramente nel browser non lo vedo..

    EDIT
    Ho capito ora l'ultima parte del tuo post, io non mi preoccupavo del =&gt; , so bene che equivale a => ed è la formattazione della funzione print_r, il problema è che la funzione legge cose diverse da quelle che ci sono realemente (controlla il testo del file xml e l'array stampato e noterai delle differenze dalla terza riga in poi).
    Spero di essermi spiegato meglio.
    Nunc Bibendum est!

  4. #4

    Re: Re: Problema strano per leggere un file

    [supersaibal]Originariamente inviato da ghiacciato
    poi $gt; è iol simbolo di >
    e l'output dovrebbe essere

    Array{
    [1] => valore1
    [2] => val2
    }

    il valore quindi dovrebbe essere solo una codifica in HTML..

    ciaociao

    ..IcE.. [/supersaibal]
    autoquote() LOL..

    è il modo di php di stampare un array..

    nomevar=Array
    {
    [1] => valore //primo valore dell'array => indica la correlazione tra l'indice dell'array e il valore associato
    [2] => valore //idem
    } // chiuso array

    quindi i caratteri strani che ti compaioni &gt; sono solo la codifica in ASCII per HTML del carattere > [maggiore]



    ps: ritornando sui consigli è meglio ceh ogni funzione apra e chiuda i file usati.. perchè è possibile che poi le tue funzioni non vengano usate nell'ordine che hai stabilito di partenza[e una funzione si trova poi a non avere i file necessari aperti], e questa semplice operazione porta ad un migior utilizzo della memoria e delle risorse di sistema..
    visit the BEST italian fotolog http://www.ghiacciato.it/fotolog

    "Solo due cose sono infinite, l'universo e la stupidità dell'essere umano.. ma sulla prima ho ancora delle riserve.." A.Einstein

  5. #5
    Utente di HTML.it L'avatar di bart87
    Registrato dal
    Apr 2004
    Messaggi
    184
    Ho editato il post precedente, probabilmente non mi ero spiegato bene
    Grazie per l'interessamento cmq..
    Se riesci a dare 1 occhiata..
    Thnx
    Nunc Bibendum est!

  6. #6
    beh.. potevi spiegare dopo, no?

    sembra che vad in confusione con i /> e i </ ..

    ..mi dispiace ma su questo non so aiutarti

    prova a fare un giro si www.php.net/manual/it/function.fgets.php
    è tutto quello che ti posso dire..

    ciao!

    ..IcE..
    visit the BEST italian fotolog http://www.ghiacciato.it/fotolog

    "Solo due cose sono infinite, l'universo e la stupidità dell'essere umano.. ma sulla prima ho ancora delle riserve.." A.Einstein

  7. #7
    Utente di HTML.it L'avatar di bart87
    Registrato dal
    Apr 2004
    Messaggi
    184
    [supersaibal]Originariamente inviato da ghiacciato
    beh.. potevi spiegare dopo, no?

    sembra che vad in confusione con i /> e i </ ..

    ..mi dispiace ma su questo non so aiutarti

    prova a fare un giro si www.php.net/manual/it/function.fgets.php
    è tutto quello che ti posso dire..

    ciao!

    ..IcE.. [/supersaibal]
    Ho visto anche io che sembra ch siano i /> e i </ che fanno casino, ma la cosa strana è che in altri casi va bene..
    Grazie cmq.
    Help!
    Nunc Bibendum est!

  8. #8
    prova con questa funzione:
    codice:
    function getTxtData($file) {
    
    	$dataarray = array();
    	$dataarray = @file($file,1);
    
    	for($n=0;$n<@count($dataarray);$n++)
    		$dataarray[$n]=@trim($dataarray[$n]);
    
    	return $dataarray;
    }
    
    function xml($file) { 
    	$this->file = $file; 
    	$this->struct = getTxtData($file);                 
    }
    «Se leggi dimentichi, se vedi capisci, se fai impari» Piaget

  9. #9
    Utente di HTML.it L'avatar di bart87
    Registrato dal
    Apr 2004
    Messaggi
    184
    Niente da fare..
    Non capisco..
    Nunc Bibendum est!

  10. #10
    ciao ... so che non sono in tema ... ma xche non usi il parser xml di php?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.