2013-01-07 8 views
11

Powiel możliwe:
How remove extension from string (only real extension!)usuń z pliku

Jestem nowy na php i mają wiele nauczyć! Eksperymentuję z MiniGal Nano na naszej stronie King County Iris Society. Działa całkiem dobrze dla naszych celów z jednym małym wyjątkiem: nazwa pliku zdjęcia musi być widoczna pod miniaturą. Stworzyłem pracę, ale pokazuje ona rozszerzenie. Znalazłem próbki kodu funkcji, ale nie mam pojęcia, jak włączyć je do istniejącego kodu. Każda pomoc byłaby bardzo doceniana.

Przykład Link: http://www.kcis.org/kcisphotogallery.php?dir=Iris.Japanese

Dziękujemy!

+0

Krótko mówiąc, chcesz usunąć '.php' z nazwy skryptu? – Supericy

+0

To zależy od tego, jak zdefiniujesz "rozszerzenie". Wszystko po ostatniej kropce? Wszystko po każdej kropce? Itd. Możesz użyć wyrażenia regularnego, zrobić sztuczkę z podciągami itp. Ale musisz logicznie zdefiniować, co próbujesz usunąć. Rozważmy nazwy plików takie jak 'somefile.jpeg' lub' some.file.jpg' lub nawet 'somefile' bez żadnego" rozszerzenia ". – David

Odpowiedz

28

Istnieje kilka sposobów, aby to zrobić, ale myślę, że jednym z najszybszych sposobów jest następująca

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

Innym rozwiązaniem jest to. Nie testowałem go, ale wygląda na to powinno działać dla wielu okresów w pliku

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

też:

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

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

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

We wszystkich tych $name zawiera nazwę pliku bez rozszerzenia

+2

To nie jest złe, ale nie pomoże dla 'my.image.jpg' –

+0

Dodano do tego innego, próbowałem go znaleźć, gdy odpowiedziałeś haha ​​ – Ascherer

+1

Możesz również pop element tablicy dla pierwszego, a następnie dołącz ponownie do tablicy. – automaticoo

7

Możesz użyć do tego celu pathinfo().

<?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

. Bardziej zwyczajnie pytać tylko o to, co jest potrzebne z funkcji 'pathinfo()': pathinfo (plik $, PATHINFO_FILENAME) – salathe

3

Jeśli wiesz na pewno, że rozszerzenie pliku jest zawsze będzie długo cztery znaki (np „.jpg”), można po prostu użyć substr() gdzie nazwa pliku wyjściowego:

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

Jeśli jest szansa, że ​​w rozszerzeniu pliku pojawią się obrazy z większą lub mniejszą liczbą znaków (np. ".jpeg"), będziesz musiał dowiedzieć się, gdzie znajduje się ostatni okres. Skoro jesteś wyprowadzanie nazwę pliku z pierwszego znaku, pozycja tego okresu może być używany do wskazania liczby znaków chcesz wyświetlić:

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

Aby uzyskać więcej informacji na temat tych funkcji, sprawdź instrukcję PHP w http://php.net/substr i http://php.net/strrpos.