Szukam małej funkcji, która pozwoli mi usunąć rozszerzenie z nazwy pliku.
Znalazłem wiele przykładów, szukając w Google, ale są one złe, ponieważ po prostu usuwają część ciągu z "." . Używają kropki jako ogranicznika i po prostu przecinają strunę.
Spójrz na te skrypty,
$from = preg_replace('/\.[^.]+$/','',$from);
lub
$from=substr($from, 0, (strlen ($from)) - (strlen (strrchr($filename,'.'))));
Kiedy dodamy ciąg w ten sposób:
This.is przykład somestring
Zwróci tylko „To” ...
Rozszerzenie może mieć 3 lub 4 znaki, więc musimy sprawdzić, czy kropka jest na pozycji 4 czy 5, a następnie ją usunąć.
Jak można to zrobić?
Odpowiedzi:
Spróbuj tego:
Tak więc dopasowuje kropkę, po której następują trzy lub cztery znaki, które nie są kropką ani spacją. Zasada „3 lub 4” powinna prawdopodobnie zostać złagodzona, ponieważ istnieje wiele rozszerzeń plików, które są krótsze lub dłuższe.
źródło
20120720.something.somethingelse.jpg
"$var"
{2,4}
zamiast{3,4}
http://php.net/manual/en/function.pathinfo.php
źródło
Z instrukcji, pathinfo :
Nie musi to być pełna ścieżka, aby działać poprawnie. Będzie tak samo szczęśliwie analizować,
file.jpg
jak/path/to/my/file.jpg
.źródło
Użyj PHP basename ()
(PHP 4, PHP 5)
var_dump(basename('test.php', '.php'));
Wyjścia: string (4) "test"
źródło
Jest to dość łatwe rozwiązanie i będzie działać bez względu na długość rozszerzenia lub liczbę kropek lub innych znaków w ciągu.
W zasadzie to wyszukuje tylko ostatnie wystąpienie. a następnie używa podłańcucha do pobrania wszystkich znaków do tego momentu.
Jest podobny do jednego z przykładów z Google, ale prostszy, szybszy i łatwiejszy niż wyrażenia regularne i inne przykłady. No i tak imo. Mam nadzieję, że to komuś pomoże.
źródło
.htaccess
Możesz użyć wbudowanego oprogramowania PHP, aby pomóc ...
Chociaż jeśli masz do czynienia tylko z nazwą pliku (
.somefile.jpg
), otrzymasz ...Zobacz to na CodePad.org
Lub użyj wyrażenia regularnego ...
Zobacz to na CodePad.org
Jeśli nie masz ścieżki, ale tylko nazwę pliku, to zadziała i będzie znacznie bardziej zwięzłe ...
Zobacz to na CodePad.org
Oczywiście oba szukają tylko ostatniego okresu (
.
).źródło
.htaccess
Poniższy kod działa dobrze i jest dość krótki. Po prostu dzieli plik na tablicę oddzieloną kropkami, usuwa ostatni element (który hipotetycznie jest rozszerzeniem) i ponownie przekształca tablicę z kropkami.
źródło
.htaccess
Właściwie jest to absolutnie właściwa rzecz. Śmiało i użyj tego.
Rozszerzenie pliku znajduje się po ostatniej kropce i nie jest wymagane, aby rozszerzenie pliku zawierało określoną liczbę znaków. Nawet mówiąc tylko o systemie Windows, ma już rozszerzenia plików, które nie mieszczą 3-4 znaków, takie jak np.
.manifest
.źródło
.htaccess
i.htpasswd
Apache środowiskach.Polecam użycie:
pathinfo
zPATHINFO_FILENAME
źródło
Jest na to kilka sposobów, ale myślę, że jeden z szybszych jest następujący
Innym rozwiązaniem jest to. Nie testowałem tego, ale wygląda na to, że powinien działać przez wiele okresów w nazwie pliku
Również:
W każdym z nich
$name
zawiera nazwę pliku bez rozszerzeniaźródło
Wynik:
źródło
$the_extension = substr($image_name, $last_dot_index, $last_dot_index);
Dodaj to, aby uzyskać rozszerzenie pliku.Jak wspominają inni, pomysł ograniczenia rozszerzenia do określonej liczby znaków jest błędny. Idąc z ideą array_pop, myśląc o rozdzielanym ciągu jako tablicy, ta funkcja była dla mnie przydatna ...
Stosowanie:
Wyjścia:
W akcji:
http://sandbox.onlinephpfunctions.com/code/5d12a96ea548f696bd097e2986b22de7628314a0
źródło
Możesz ustawić długość wzorca wyrażenia regularnego za pomocą
{x,y}
operatora.{3,4}
pasowałaby, gdyby poprzedni wzorzec wystąpił 3 lub 4 razy.Ale nie sądzę, że naprawdę tego potrzebujesz. Co zrobisz z plikiem o nazwie „This.is”?
źródło
Użyj tego:
źródło
Spróbuj użyć tego. na pewno usunie rozszerzenie pliku.
źródło
EDYCJA : Najmądrzejsze podejście IMHO, usuwa ostatni punkt i następujący tekst z nazwy pliku (inaczej rozszerzenie):
Twoje zdrowie ;)
źródło
end()
nie powinno działać z funkcją przekazaną jako parametr. Wyświetla również powiadomienie: Tylko zmienne powinny być przekazywane przez odniesienieDziała to w przypadku wielu części przedłużenia i jest jednocześnie krótkie i wydajne:
źródło