<?php
$path ="/home/httpd/html/index.php";
$file = basename($path);// $file is set to "index.php"
$file = basename($path,".php");// $file is set to "index"?>
basename () ma błąd podczas przetwarzania znaków azjatyckich, takich jak chiński.
niedz. Junwen.
1
Dzięki Sun, właśnie zaoszczędziłeś mi godzin zabijania błędów, ponieważ moja aplikacja będzie używana za granicą.
SilentSteel
11
Proponuję pathinfona basenamejak Metafaniel pisał poniżej. pathinfo()da ci tablicę z częściami ścieżki. Lub w tym przypadku możesz po prostu poprosić o nazwę pliku. Więc pathinfo('/var/www/html/index.php', PATHINFO_FILENAME)powinien zwrócić 'index.php'dokumentację PHP Pathinfo
OnethingSimple
7
@OnethingSimple Sprawdź dokumenty jeszcze raz ... choć jest to intuicyjne, ale chcesz PATHINFO_BASENAMEuzyskać pełny index.php. PATHINFO_FILENAMEda ci index.
levigroker 12.04.16
1
w każdym razie, dla metody kompatybilnej z Unicode, mb_substr($filepath,mb_strrpos($filepath,'/',0,'UTF-16LE'),NULL,'UTF-16LE')- po prostu zastąp UTF-
16LE dowolnym zestawem
68
Zrobiłem to za pomocą funkcji, PATHINFOktóra tworzy tablicę z częściami ścieżki do użycia! Na przykład możesz to zrobić:
Ta basenamefunkcja powinna dać ci to, czego chcesz:
Biorąc pod uwagę ciąg znaków zawierający ścieżkę do pliku, funkcja zwróci podstawową nazwę pliku.
Na przykład, cytując stronę podręcznika:
<?php
$path ="/home/httpd/html/index.php";
$file = basename($path);// $file is set to "index.php"
$file = basename($path,".php");// $file is set to "index"?>
Istnieje kilka sposobów uzyskania nazwy pliku i rozszerzenia. Możesz użyć następującego, który jest łatwy w użyciu.
$url ='http://www.nepaltraveldoor.com/images/trekking/nepal/annapurna-region/Annapurna-region-trekking.jpg';
$file = file_get_contents($url);// To get file
$name = basename($url);// To get file name
$ext = pathinfo($url, PATHINFO_EXTENSION);// To get extension
$name2 =pathinfo($url, PATHINFO_FILENAME);// File name without extension
Nie sądzę, że jest to błąd, w Dokumentach jej wymienić: Caution basename() is locale aware, so for it to see the correct basename with multibyte character paths, the matching locale must be set using the setlocale() function. . Ale wolę też używać preg_replace, ponieważ separator katalogów różni się w zależności od systemu operacyjnego. Na Ubuntu `\ 'nie jest separatorem directoy i basename nie będzie na niego wpływał.
Aby to zrobić w jak najmniejszej liczbie wierszy, sugerowałbym użycie wbudowanej DIRECTORY_SEPARATORstałej wraz zexplode(delimiter, string) aby rozdzielić ścieżkę na części, a następnie po prostu oderwać ostatni element w podanej tablicy.
Aby uzyskać dokładną nazwę pliku z URI, użyłbym tej metody:
<?php
$file1 =basename("http://localhost/eFEIS/agency_application_form.php?formid=1&task=edit");//basename($_SERVER['REQUEST_URI']); // Or use this to get the URI dynamically.
echo $basename = substr($file1,0, strpos($file1,'?'));?>
pathinfo
nabasename
jak Metafaniel pisał poniżej.pathinfo()
da ci tablicę z częściami ścieżki. Lub w tym przypadku możesz po prostu poprosić o nazwę pliku. Więcpathinfo('/var/www/html/index.php', PATHINFO_FILENAME)
powinien zwrócić'index.php'
dokumentację PHP PathinfoPATHINFO_BASENAME
uzyskać pełnyindex.php
.PATHINFO_FILENAME
da ciindex
.mb_substr($filepath,mb_strrpos($filepath,'/',0,'UTF-16LE'),NULL,'UTF-16LE')
- po prostu zastąp UTF-Zrobiłem to za pomocą funkcji,
PATHINFO
która tworzy tablicę z częściami ścieżki do użycia! Na przykład możesz to zrobić:Zwróci to:
Korzystanie z tej funkcji jest dostępne od PHP 5.2.0!
Następnie możesz manipulować wszystkimi częściami według potrzeb. Na przykład, aby użyć pełnej ścieżki, możesz to zrobić:
źródło
Ta
basename
funkcja powinna dać ci to, czego chcesz:Na przykład, cytując stronę podręcznika:
Lub w twoim przypadku:
Dostaniesz:
źródło
Istnieje kilka sposobów uzyskania nazwy pliku i rozszerzenia. Możesz użyć następującego, który jest łatwy w użyciu.
źródło
Dzięki SplFileInfo :
Patrz : http://php.net/manual/en/splfileinfo.getfilename.php
źródło
Spróbuj tego:
źródło
basename () ma błąd podczas przetwarzania znaków azjatyckich, takich jak chiński.
Używam tego:
źródło
Caution basename() is locale aware, so for it to see the correct basename with multibyte character paths, the matching locale must be set using the setlocale() function.
. Ale wolę też używać preg_replace, ponieważ separator katalogów różni się w zależności od systemu operacyjnego. Na Ubuntu `\ 'nie jest separatorem directoy i basename nie będzie na niego wpływał.źródło
Aby to zrobić w jak najmniejszej liczbie wierszy, sugerowałbym użycie wbudowanej
DIRECTORY_SEPARATOR
stałej wraz zexplode(delimiter, string)
aby rozdzielić ścieżkę na części, a następnie po prostu oderwać ostatni element w podanej tablicy.Przykład:
źródło
Możesz użyć funkcji basename () .
źródło
Aby uzyskać dokładną nazwę pliku z URI, użyłbym tej metody:
źródło
źródło
To proste. Na przykład:
Dane wyjściowe będą:
źródło
źródło