Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [php]funzione file e substr...

    sicuramente ci sarà qualcosa a livello concettuale che mi sfugge, ma ora vi spiego cosa dovrei fare.

    Ho un file .txt formattato a mo' di csv quindi ho n righe, dove nella prima ho le intestazioni e nelle successive i valori; per intenderci una cosa del genere:

    "C_ID";"C_NOMINATIVO";"C_DATA_NASCITA";"C_COMU NE";
    "1";"ROSSI MARIO";"1954-03-27";"BRESCIA";
    "2";"VERDI LUCA";"1968-12-06";"BERGAMO";

    ora io ho fatto uno script del genere (proprio due righe):
    codice:
    $f="txt.txt";
    $s=file($f);
    
    $n=sizeof($s);
    for ($i=0;$i<=$n;$i++){
    	$s[$i]=substr($s[$i],1,strlen($s[$i])-1);
    	$str=explode("\";\"",$s[$i]);
    	echo "<pre>";	print_r($str);	echo "</pre>";
    }
    il problema sta nel fatto che per ogni riga del file io dovrei eliminare le prime e le ultime virgolette, quindi ho messo una cosa del genere: $s[$i]=substr($s[$i],1,strlen($s[$i])-1);
    ecco la cosa che non funziona è l'eliminazione delle ultime virgolette, mentre le prime le elimina tranquillamente...sapete dirmi quindi dove sbaglio? magari è un errore nel conteggio dei caratteri, o degli indici, che non ho ben chiaro usando insieme substr ed explode





    grazie mille per qualsiasi aiuto!
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2004
    Messaggi
    1,141
    prova facendo:
    Codice PHP:
    substr($s[$i],1,strrpos($s[$i],"\"")-1);

    //cmq se fai:
    $s[$i]=substr($s[$i],1,strlen($s[$i])-2);
    //dovrebbe andare ugualmente, ma non so se è corretto fare così 
    ciao

  3. #3
    non avevo pensato al strrpos!! grazie mille, sembra funzionare


    il problema (forse) stava nel fatto che in fondo alla riga mi trovo dei \n infatti nel mio ciclo ho provato a far stampare:
    codice:
    echo $s[$i]{strlen($s[$i])-1};
    ed in effetti ottenevo un ulteriore riga vuota, solo nel codice, (o forse era solo una mia impressione dovuta al fatto che dovevo trovare una spiegazione )
    La funzione file dovrebbe mettermi il mio file in un array riga per riga no? e quindi i vari \r\n dovrebbero sparire, o no?



    comunque grazie ancora! e se mi risolvi anche quest'ultimo dubbio grazie 2 volte
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2004
    Messaggi
    1,141
    Originariamente inviato da 13manuel84
    non avevo pensato al strrpos!! grazie mille, sembra funzionare


    il problema (forse) stava nel fatto che in fondo alla riga mi trovo dei \n infatti nel mio ciclo ho provato a far stampare:
    codice:
    echo $s[$i]{strlen($s[$i])-1};
    ed in effetti ottenevo un ulteriore riga vuota, solo nel codice, (o forse era solo una mia impressione dovuta al fatto che dovevo trovare una spiegazione )
    La funzione file dovrebbe mettermi il mio file in un array riga per riga no? e quindi i vari \r\n dovrebbero sparire, o no?



    comunque grazie ancora! e se mi risolvi anche quest'ultimo dubbio grazie 2 volte
    C'è una nota nel manuale
    http://it2.php.net/manual/it/function.file.php


    Nota: Ciascuna riga dell'array restituito conterrà il carattere di fine riga, occorre, pertanto, utilizzare rtrim() se si desidera rimuovere il carattere di fine riga.


    Quindi penso che metta i caratteri di fine riga...

    ciao

  5. #5
    sono un cretino! pensavo di conoscere abbastanza la funzione file() che non ho guardato il manuale! Grazie ancora!
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  6. #6
    Utente di HTML.it
    Registrato dal
    Mar 2004
    Messaggi
    1,141
    Di niente,figurati...
    anzi, ti ringrazio anchio perchè sinceramente non sapevo che la funzione file mettesse i terminatori di riga, sono andato a rivederla per questo thread, quindi è servito pure a me

    ciao

  7. #7
    Originariamente inviato da ken84
    Di niente,figurati...
    anzi, ti ringrazio anchio perchè sinceramente non sapevo che la funzione file mettesse i terminatori di riga, sono andato a rivederla per questo thread, quindi è servito pure a me

    ciao
    il bello (o il brutto, dipende dai punti di vista ) del php è che quando penso di conoscere una funzione c'è sempre qualcosa che mi è nascosto!


    alla prossima! ciauz!
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

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.