Visualizzazione dei risultati da 1 a 7 su 7

Discussione: Comprensione codice

  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2008
    Messaggi
    170

    Comprensione codice

    In uno script avrei il seguente codice:

    codice:
    if ($handle = opendir($directory)) { 
    	while (false !== ($file = readdir($handle))) { 
    		if ($file != "." && $file != ".." && $file != rtrim($directory,"/")) { 
    			$files[] = $file; 
    		} 
    	}
    	closedir($handle); 
    }
    So che funziona e che esplora il contenuto di una cartella mettendo i file in un array ma non riesco a capire a cosa serveno gli IF, i vari puntini nella terza riga e l'eliminazione degli spazi con rtrim.

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    il primo IF verifica semplicemente che non ci siano errori nell'apertura della cartella prima di proseguire, il secondo (con i "puntini") serve a tralasciare (cioè a non includere nel vettore) due cartelle speciali - "." (la cartella attuale), ".." (la cartella "padre") - e un eventuale elemento che abbia lo stesso nome della cartella aperta: rtrim(...,"/") semplicemente elimina un eventuale "/" alla fine del nome della cartella, così che il confronto sia valido sia che $directory valga per esempio "provafolder" sia che valga "provafolder/"

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2008
    Messaggi
    170
    Originariamente inviato da eiyen
    il primo IF verifica semplicemente che non ci siano errori nell'apertura della cartella prima di proseguire, il secondo (con i "puntini") serve a tralasciare (cioè a non includere nel vettore) due cartelle speciali - "." (la cartella attuale), ".." (la cartella "padre") - e un eventuale elemento che abbia lo stesso nome della cartella aperta: rtrim(...,"/") semplicemente elimina un eventuale "/" alla fine del nome della cartella, così che il confronto sia valido sia che $directory valga per esempio "provafolder" sia che valga "provafolder/"
    Grazie mille, tutto chiaro tranne per la cartella padre e quella attuale che non riesco a capire a cosa ti riferisci .

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    154
    In tutti i sistemi operativi esistono delle pseudo-directory, presenti in ogni cartella del disco ("." e ".." , appunto) che rappresentano la cartella corrente e quella padre nella struttura del disco.
    Probabilmente nel tuo script non è necessario che queste cartelle vengano visualizzate.

    Quindi, partendo da questo percorso: "/usr/www/htdocs/test/index.php"

    "../" è uguale a "/usr/www/htdocs/"
    "./" è uguale a "/usr/www/htdocs/test/"
    "../test2/index.php" è uguale a "/usr/www/htdocs/test2/index.php"

    ma volendo puoi anche scrivere una cosa del tipo:
    "../../../bin/../www/dir2/prova/../test.php" (anche se non è molto conveniente)
    che è uguale a "/usr/www/htdocs/dir2/test.php".
    In pratica torna indietro di 3 cartelle(a /usr/), entra in bin, esce, entra in www/dir2/prova/, esce da prova e carica test.php

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2008
    Messaggi
    170
    Grazie mille, tutto chiaro ma avrei un altro problema in un'altra parte dello script.

    Avrei dei titoli in un file txt (uno per riga)

    e li metto in array in questo modo:

    codice:
    $opentxt = fopen($txt, 'r');
    $titles = file($txt);
    fclose($opentxt);
    $title = 0;

    In un ciclo richiamo i titoli aggiungengo delle funzioni composte di solo html in questo modo:

    codice:
    table_top(); echo $titles[$title++]; table_top2();
    Lo script funziona ma purtroppo mi aggiunge uno a capo nel codice html che lo so non è importante ma vorrei un codice sempre lineare; così aggiungo prima del codice sopra riportato questo pezzo:

    codice:
    str_replace($titles[$title]);
    per levare l'a capo preso dal file txt ma mi da un warning "Warning: Wrong parameter count for str_replace()" e non so come risolvere...

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2008
    Messaggi
    170
    Nessuna soluzione?

  7. #7
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,508
    Originariamente inviato da world war
    str_replace($titles[$title]);

    per levare l'a capo preso dal file txt ma mi da un warning "Warning: Wrong parameter count for str_replace()" e non so come risolvere...
    Ovvio che ti da questo problema, str_replace prevede il passaggio di almeno 3 parametri, tu gliene passi uno solo.

    http://php.net/manual/en/function.str-replace.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.