Newsgroup: it.comp.www.php
Titolo: Filename

Partendo da un filename ottenuto da readdir, vorrei gestire in modo separato
il nome del file dalla sua estensione. Non ho trovato però funzioni che mi
vengano incontro. Devo per forza creare una funzione che mi estragga tutto
quello che c'è perima del punto?
Grazie per l'aiuto

 separato il nome del file dalla sua estensione. 
http://www.php.net/pathinfo
-- 
I'am what I'am, I do what I can
Sei un newbie? Leggi questo 
http://url.repository.biz/go/1

 il nome del file dalla sua estensione. Non ho trovato però funzioni che mi
Qualcosa tipo "glob()" ?
-----------------------------------------
glob
Find pathnames matching a pattern (PHP 4 >= 4.3.0)
array glob ( string pattern [, int flags] )
The glob() function searches for all the pathnames matching pattern
according to the rules used by the shell. No tilde expansion or parameter
substitution is done.
Returns an array containing the matched files/directories or FALSE on error.
-----------------------------------------
Nota: per separare il nome del file dalla sua estensione potresti usare
anche explode...
Spero di esserti stato utile.
Francesco

 Qualcosa tipo "glob()" ?
Credo sia molto meglio pathinfo:
<?php 
$path_parts = pathinfo("/www/htdocs/index.html"); 
if (isset ($path_parts["extension"])) 
{ echo $path_parts["extension"]; }
?>


Proprio quello che cercavo e che, a quanto pare, non avevo visto. Grazie per
il suggerimento.
Jamas

Torno nuovamente sul problema, ho notato che richiamando la "basename" di
"pathinfo" non mi viene restituito soltanto il corpo del nomefile, ma sia il
nome che l'estensione. Pensando di aggirare l'inconveniente usando "substr",
ma non ho trovato un corrispettivo del "lengh" per determinare il numero di
caratteri che compone la stringa di input.
In altre parole, qualcosa per avere il filename "pulito"... non ho trovato
nessuna funzione a riguardo.
$f_tmp = $path_parts["basename"];
$f_ext = $path_parts["extension"];
$tmp = substr($f_tmp, 1, (leng($f_tmp)+1);
Jamas


Allora... premesso che il concetto di 'file extension' esiste solo in alcuni
sistemi operativi (windows, ad esempio) non può esistere l'equivalente in
linux (ad esempio).
Per questo motivo non la troverai proprio.
In linux infatti l'estensione del file non conta... e ciao.txt conta quanto
ciao.exe se questi contengono caratteri ascii (ad esempio)
Dato che il tuo problema è cmq quello di risolvere il problema, ti consiglio
di cercare di piu' sul manuale (str_ per esemprio strlen() ).
E tieni presente che fare l'explode() di una stringa usando come "." il
delimitatore dei 'pezzi', il 'basename' altro non è che tutto il nome tranne
l'ultimo "token".
$vettore=explore(".",$nome_file);
$quanti_punti=count($vettore);
// Ciclo
for ($i=0;$i<$quanti_punti;$i++){
       $base_name.=$vettore[$i].".";
}
$extension=$vettore[$quanti_punti+1];

 non ho trovato un corrispettivo del "lengh" 
http://www.php.net/strlen
-- 
I'am what I'am, I do what I can
Vado in ferie fino al 2 buon capodanno a tutti.


    Grazie ad entrambi per i suggerimenti. Quello che voglio fare è infatti
ricostruire dei nomifile da quelli trovati. Ad esempio banalmente:
visualizzare solo le immagini che terminano con *_l.jpg ed a queste
associare all'immagine pippo_l.jpg il link a pippo.jpg
    Eccco il motivo della mia fissazione con il spezzettamento del filename.
Interessante il ciclo for per estrarre la corretta posizione del punto,
avevo ipotizzato prima qualcosa di più semplice del tipo:
      $f_tmp = pathinfo($f);
      $f_namt= substr($f_tmp["basename"], 1, strlen($f_tmp["basename"])-5);
      $f_suft= substr($f_namt, (strlen($f_namt)-2), 2);
      $f_extt= $f_tmp["extension"];
      $f_suf = '_l';
      $f_nam = substr($f_namt, 1, strlen($f_namt)-2 )&'.'&$f_extt;
estrarre il nome del file, estrarre gli ultimi due caratteri del nome, da un
confronto del suffisso (ultimi due caratteri) trovato con quello che mi
aspetto da fare in seguito, sulla $f_nam mi troverei il nome dell'immagine
senza suffisso già ricostruita. Beh ci ripenserò su, anche se questo
dovrebbe già funzionare.