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

    Stampare il percorso del file

    innanzitutto ciao a tutti e buona serata
    il mio "problema" se cosi' si puo' definire e' che avrei bisogno di stampare a video il percorso del file.php in cui sono,
    mi spiego meglio con esempio:
    mi trovo in: "sito/zona/pagina1.php"
    mi serve: "zona/"
    e all'occorrenza se mi trovo in: "sito/zona/sottodir1/sottodir2/pagina2.php"
    mi servirebbe: "zona/sottodir1/sottodir2"

    tutto questo mi servirebbe perche' mi ricavo gia' il nome della pagina con
    $pagina = explode(".",basename($_SERVER['SCRIPT_NAME']));
    dove nel caso di "pagina1.php", pagina[0] sarebbe pagina1 e pagina[1] sarebbe php
    quindi io stampo pagina[0], ma nei casi in cui mi trovo in una sottodirectory dovrei anteporgli le sottodirectory, in modo di trovarmi al posto del semplice "pagina" un "zona/pagina"

    mi rendo conto di dovermi ricavare una sottostringa grazie alla funzione "substr" da uan variabile globale $_SERVER, ma non so' quale e soprattutto come usare substr!

    spero mi possiate essere d'aiuto
    grazie mille in anticipo a tutti per le risposte

    EDIT: se fosse possibile sarebbe molto utile ricavare ogni sottodirectory e inserirla in un array, credo sia molto piu' fattibile!
    esempio: se mi trovo in "sito/zona/sottodir1/sottodir2/pagina.php"
    avere un array esempio in cui esempio[0]=zona, esempio[1]=sottodir1, esempio[2])sottodir2.
    e quindi se mi trovo solo in sito l'array esempio sara' vuoto!
    _angelotm

  2. #2
    Utente di HTML.it L'avatar di Secta
    Registrato dal
    May 2002
    Messaggi
    365
    L'ho scritta al volo ed è un po "grezzuccia"... ma ti serva come base, poi magari la modifichi

    Codice PHP:
    $parts explode('/'trim($_SERVER['REQUEST_URI'], '/'));
    $count count($parts);
    $percorso '';

    for (
    $i 0$i $count$i++)
    {
        
    $part $parts[$i];
        
    $div  ' => ';
        
        if (
    $i == $count 1)
        {
            
    $part str_replace('.php'''$part); 
            
    $div  '';
        }

        
    $percorso .= sprintf('[url="blabla/%s"]%s[/url]%s'$part$part$div);
    }

    echo 
    $percorso
    "Dai diamanti non nasce niente, dal letame nascon fiori."
    Fabrizio De Andrè

  3. #3
    ciao! grazie per la risposta! provo subito la tua idea e ti faccio sapere ;D
    _angelotm

  4. #4
    ho provato a stampare ogni singolo elemento di parts ed e' ESATTAMENTE quello che cercavo
    perdonami se ti faccio questa domanda ma non mi piace solo "copiare" le cose :P
    mi sapresti spiegare, cortesemente, la seguente stringa cosa "fa"?
    explode('/', trim($_SERVER['REQUEST_URI'], '/'));
    cioe, se potresti spiegarmi cosa fa' la funzione explode() (e perche' lo slash lo hai passato sia al 1° che al 3° parametro), e cosa fa' la funzione trim?
    grazie ancora, gentilissimo
    _angelotm

  5. #5
    mi rispondo da solo, magari questo post puo' servire a qualcuno
    qui ho trovato una lista completa delle funzioni di cui ti cheidevo:
    http://php.html.it/guide/lezione/265...e-le-stringhe/
    grazie alla quale ho apportato alla tua soluzione le debite modifche di cui avevo bisogno,
    posto il codice per tutti:

    function posizione_attuale(){
    $dir = explode('/', trim($_SERVER['REQUEST_URI'], '/'));
    $dir_count = count($dir);
    for ($i=1; $i<($dir_count); $i++){
    $part = $dir[$i];
    if ($i==($dir_count-1)){
    $part=str_replace('.php', '', $part);
    if(strpos($part,"?")){echo substr($part, 0, strpos($part,"?"));}
    else{echo $part;}
    }
    else{echo $part."/";}
    }
    }

    ho inoltre (sempre grazie alla guida di cui sopra) effettuato un controllo se la pagina ha dei parametri get (non so come altro chiamarli^^''), in modo che stampa solo il nome della pagina senza tutto quello che segue
    grazie ancora Secta! sei stato ultra-utile!
    _angelotm

  6. #6
    Utente di HTML.it L'avatar di Secta
    Registrato dal
    May 2002
    Messaggi
    365
    La seguente stringa (stringa? volevi dire riga?) fa questo

    Codice PHP:
    explode('/'trim($_SERVER['REQUEST_URI'], '/')); 
    La funzione trim mi è servita per eliminare eventuali slash che erano solo d'impiccio (nota che l'ultimo slash è un argomento di trim, non di explode), di fatti il valore di ritorno di trim passa alla funzione explode... la quale accetta tre parametri, ma io ne ho usato soltanto due: il primo è il delimitatore e il secondo la stringa sulla quale agire (il return di trim come detto). Ora, cosa fà explode? Semplicemente analizza la stringa, cerca all'interno di esso il delimitatore specificato... e allo stesso modo con cui tu affetti un bel salamino, lui affetta la stringa Ogni "fetta" trovata la inserisce in un'array che poi sarà il return di questa funzione (sia essa popolata o vuota... o false nel caso in cui passi un delimitatore vuoto). Ed ecco che hai ottenuto un array partendo da una stringa di questo tipo /bla/bla/bla/bla.php.

    Come ti dicevo è molto grezza... e fondamentalmente dovresti verificare due cose: la prima è che effettivamente dentro $_SERVER vi sia REQUEST_URI, altrimenti ti devi usare altro. La seconda è che in coda a REQUEST_URI non vi sia la querystring che va eliminata.
    "Dai diamanti non nasce niente, dal letame nascon fiori."
    Fabrizio De Andrè

  7. #7
    Utente di HTML.it L'avatar di Secta
    Registrato dal
    May 2002
    Messaggi
    365
    Originariamente inviato da angelotm
    mi rispondo da solo, magari questo post puo' servire a qualcuno
    qui ho trovato una lista completa delle funzioni di cui ti cheidevo:
    http://php.html.it/guide/lezione/265...e-le-stringhe/
    grazie alla quale ho apportato alla tua soluzione le debite modifche di cui avevo bisogno,
    posto il codice per tutti:

    function posizione_attuale(){
    $dir = explode('/', trim($_SERVER['REQUEST_URI'], '/'));
    $dir_count = count($dir);
    for ($i=1; $i<($dir_count); $i++){
    $part = $dir[$i];
    if ($i==($dir_count-1)){
    $part=str_replace('.php', '', $part);
    if(strpos($part,"?")){echo substr($part, 0, strpos($part,"?"));}
    else{echo $part;}
    }
    else{echo $part."/";}
    }
    }

    ho inoltre (sempre grazie alla guida di cui sopra) effettuato un controllo se la pagina ha dei parametri get (non so come altro chiamarli^^''), in modo che stampa solo il nome della pagina senza tutto quello che segue
    grazie ancora Secta! sei stato ultra-utile!
    Eccellente Ero andato un attimo in bagno perchè natura chiamava e non avevo inviato il post... ma vedo che hai risolto alla grande Ma bada bene a REQUEST_URI... fai un controllo prima e se non c'è usa altro
    "Dai diamanti non nasce niente, dal letame nascon fiori."
    Fabrizio De Andrè

  8. #8
    Originariamente inviato da Secta
    Eccellente Ero andato un attimo in bagno perchè natura chiamava e non avevo inviato il post... ma vedo che hai risolto alla grande Ma bada bene a REQUEST_URI... fai un controllo prima e se non c'è usa altro
    perdona l'ignoranza, ma per "fai un controllo su REQUEST_URI" intendi che e' possibile che su alcuni server questa "variabile" non sia definita?
    sono poco informato riguardo alle variabili super-globali
    dici che dovrei effettuare una sorta di isset($_SERVER['REQUEST_URI'])?
    e nel caso sapresti suggerirmi quale variabile super-globale posso utilizzare? :P
    comunque grazie ancora per la disponibilita'
    _angelotm

  9. #9
    credo di aver capito cosa intendevi, rimando chiunque abbia lo stesso problema a questo post:
    http://forum.html.it/forum/showthread/t-1366946.html
    spiega come aggirare il problema se REQUEST_URI non e' definita
    p.s. potete chiudere il topic grazie
    _angelotm

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.