2009-09-13 24 views

Odpowiedz

329

Szukasz basename.

Przykład z podręcznika PHP:

<?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" 
?> 
+21

basename() ma błąd podczas znaków procesy azjatyckich, takich jak chiński. –

+0

Dzięki Sun, właśnie uratowałeś mi godziny zabijania błędów, ponieważ moja aplikacja będzie używana za granicą. – SilentSteel

+1

Bardzo buggy nawet teraz –

10

Funkcja basename powinny dać ci to, co chcesz:

podanego łańcucha zawierającego ścieżkę do pliku , funkcja ta zwróci nazwę bazową 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" 
?> 

Lub, w przypadku:

$full = 'F:\Program Files\SSH Communications Security\SSH Secure Shell\Output.map'; 
var_dump(basename($full)); 

Dostaniesz:

string(10) "Output.map" 
1

Aby uzyskać dokładną nazwę pliku z URI, chciałbym skorzystać z tej metody: przy przetwarzaniu znaków azjatyckich jak chiński

<?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, '?')); 
?> 
6

basename() ma błąd.

Używam tego:

function get_basename($filename) 
{ 
    return preg_replace('/^.+[\\\\\\/]/', '', $filename); 
} 
51

Robiłem to za pomocą funkcji PATHINFO która tworzy tablicę z części ścieżki, aby wykorzystać! Na przykład, można to zrobić:

<?php 
    $xmlFile = pathinfo('/usr/admin/config/test.xml'); 

    function filePathParts($arg1) { 
     echo $arg1['dirname'], "\n"; 
     echo $arg1['basename'], "\n"; 
     echo $arg1['extension'], "\n"; 
     echo $arg1['filename'], "\n"; 
    } 

    filePathParts($xmlFile); 
?> 

ten powróci:

/usr/admin/config 
test.xml 
xml 
test 

Użycie tej funkcji jest dostępna od PHP 5.2.0!

Następnie można dowolnie manipulować wszystkimi częściami. Na przykład, aby użyć pełnej ścieżki, można to zrobić:

$fullPath = $xmlFile['dirname'] . '/' . $xmlSchema['basename']; 
1

Basename nie działa dla mnie. Mam nazwę pliku z formularza (pliku). W przeglądarce Google Chrome (Mac   OS   X   v10.7 (Lion)) zmienna plik staje:

c:\fakepath\file.txt 

Gdy używam:

basename($_GET['file']) 

zwraca:

c:\fakepath\file.txt 

Więc w tym przypadku odpowiedź Sun Junwen działa najlepiej.

W Firefoksie zmienna pliku nie uwzględnia tej fakepath.

6

Z SplFileInfo:

klasa SplFileInfo SplFileInfo obiekt oferuje wysoki poziom zorientowanych interfejs do informacji dla pojedynczego pliku.

Nr: http://php.net/manual/en/splfileinfo.getfilename.php

$info = new SplFileInfo('/path/to/foo.txt'); 
var_dump($info->getFilename()); 

O/P: string (7) "foo.txt"

4

Spróbuj tego:

echo basename($_SERVER["SCRIPT_FILENAME"], '.php') 
0

To prosty. Na przykład:

<?php 
    function filePath($filePath) 
    { 
     $fileParts = pathinfo($filePath); 

     if (!isset($fileParts['filename'])) 
     { 
      $fileParts['filename'] = substr($fileParts['basename'], 0, strrpos($fileParts['basename'], '.')); 
     } 
     return $fileParts; 
    } 

    $filePath = filePath('/www/htdocs/index.html'); 
    print_r($filePath); 
?> 

wyjście będzie:

Array 
(
    [dirname] => /www/htdocs 
    [basename] => index.html 
    [extension] => html 
    [filename] => index 
) 
5

Istnieje kilka sposobów, aby uzyskać nazwę pliku i rozszerzenie. Możesz użyć poniższego, 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 
+0

@peter Mortensen Dzięki za twoje wsparcie –

1

Aby to zrobić w jak najmniejszej liczbie linii Moim przy użyciu wbudowanego DIRECTORY_SEPARATOR stałej wraz z explode(delimiter, string) oddzielić ścieżkę na części, a następnie po prostu wyrwać się ostatni element w przewidzianym tablicy.

Przykład:

$path = 'F:\Program Files\SSH Communications Security\SSH SecureShell\Output.map' 

//Get filename from path 
$pathArr = explode(DIRECTORY_SEPARATOR, $path); 
$filename = end($pathArr); 

echo $filename; 
>> 'Output.map' 
0
<?php 

    $windows = "F:\Program Files\SSH Communications Security\SSH Secure Shell\Output.map"; 

    /* str_replace(find, replace, string, count) */ 
    $unix = str_replace("\\", "/", $windows); 

    print_r(pathinfo($unix, PATHINFO_BASENAME)); 

?> 

body, html, iframe { 
 
    width: 100% ; 
 
    height: 100% ; 
 
    overflow: hidden ; 
 
}
<iframe src="https://ideone.com/Rfxd0P"></iframe>

Powiązane problemy