2013-01-07 13 views
11

Eventuali duplicati:
How remove extension from string (only real extension!)rimuovere dal file

Sono nuovo di zecca per php e hanno molto da imparare! Sto sperimentando con MiniGal Nano per il nostro sito Web King County Iris Society. Funziona abbastanza bene per i nostri scopi con una piccola eccezione: il nome del file della foto deve essere visibile sotto la miniatura. Ho creato un lavoro in giro, ma mostra l'estensione. Ho trovato esempi di codice di funzioni ma non ho idea di come incorporarli nel codice esistente. Qualsiasi assistenza sarebbe molto apprezzata. Link

Esempio: http://www.kcis.org/kcisphotogallery.php?dir=Iris.Japanese

Molte grazie!

+0

Quindi, in breve, si desidera rimuovere '.php' dal nome dello script? – Supericy

+0

Dipende da come si definisce "estensione". Tutto dopo l'ultimo punto? Tutto dopo ogni punto? Ecc. Puoi usare un'espressione regolare, fare qualche trucco con sottostringhe, ecc. Ma devi definire logicamente cosa stai cercando di rimuovere. Prendi in considerazione nomi di file come "somefile.jpeg" o "some.file.jpg" o anche solo "somefile" senza "estensione". – David

risposta

28

ci sono alcuni modi per farlo, ma credo che uno dei modi più veloci è la seguente

// $filename has the file name you have under the picture 
$temp = explode('.', $filename); 
$ext = array_pop($temp); 
$name = implode('.', $temp); 

Un'altra soluzione è questa. Non ho ancora testato, ma sembra che dovrebbe funzionare per più periodi in un nome di file

$name = substr($filename, 0, (strlen($filename))-(strlen(strrchr($filename, '.')))); 

anche:

$info = pathinfo($filename); 
$name = $info['filename']; 
$ext = $info['extension']; 

// Shorter 
$name = pathinfo($file, PATHINFO_FILENAME); 

// Or in PHP 5.4 
$name = pathinfo($filename)['filename']; 

In tutti questi, $name contiene il nome del file senza l'estensione

+2

Questo non è male, ma non aiuterà per 'my.image.jpg' –

+0

Aggiunto un altro per quello, stava cercando di trovarlo quando hai risposto a haha ​​ – Ascherer

+1

Puoi anche inserire un elemento dell'array per il primo e poi unisciti nuovamente alla matrice. – automaticoo

7

È possibile utilizzare pathinfo() per quello.

<?php 

// your file 
$file = 'image.jpg'; 

$info = pathinfo($file); 

// from PHP 5.2.0 : 
$file_name = $info['filename']; 

// before PHP 5.2.0 : 
// $file_name = basename($file,'.'.$info['extension']); 

echo $file_name; // outputs 'image' 

?> 
+4

È più normale chiedere solo ciò che è necessario dalla funzione 'pathinfo()': 'pathinfo ($ file, PATHINFO_FILENAME)' – salathe

3

Se si sa per certo che l'estensione del file sta andando sempre essere lungo quattro caratteri (ad esempio ".jpg"), si può semplicemente utilizzare substr() dove è il nome del file di output:

echo substr($filename, 0, -4); 

Se esiste la possibilità che ci siano immagini con più o meno caratteri nell'estensione del file (ad esempio ".jpeg"), sarà necessario sapere dove si trova l'ultimo periodo. Dal momento che stai in uscita il nome del file dal primo carattere, la posizione di tale periodo può essere usato per indicare il numero di caratteri che si desidera visualizzare:

$period_position = strrpos($filename, "."); 
echo substr($filename, 0, $period_position); 

Per informazioni su queste funzioni, controllare il manuale di PHP a http://php.net/substr e http://php.net/strrpos.

Problemi correlati