2009-09-13 24 views

risposta

329

Stai cercando basename.

L'esempio da manuale di 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() ha un bug quando i personaggi processi asiatici come il cinese. –

+0

Grazie Sun, mi hai appena salvato ore di bug killing dato che la mia app sarà usata all'estero. – SilentSteel

+1

Molto buggato anche ora –

6
$filename = basename($path); 
10

La funzione basename dovrebbe darvi ciò che si vuole:

Data una stringa contenente il percorso di un file , questa funzione restituirà il nome di base del file.

Per esempio, citando la pagina del manuale:

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

Oppure, nel tuo caso:

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

Otterrete:

string(10) "Output.map" 
1

per ottenere il nome esatto del file dal URI, vorrei utilizzare questo metodo:

<?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() ha un errore durante l'elaborazione di caratteri asiatici come il cinese.

Io uso questo:

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

Ho fatto questo utilizzando la funzione di PATHINFO che crea un array con le parti del percorso per l'uso! Ad esempio, si può fare questo:

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

Ciò restituirà:

/usr/admin/config 
test.xml 
xml 
test 

L'uso di questa funzione è disponibile dal PHP 5.2.0!

Quindi è possibile manipolare tutte le parti di cui si ha bisogno. Ad esempio, per utilizzare il percorso completo, è possibile effettuare questa operazione:

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

Basename non funziona per me. Ho ottenuto il nome del file da un modulo (file). In Google Chrome (Mac   OS   X   v10.7) la variabile del file (Lion) diventa:

c:\fakepath\file.txt 

Quando uso:

basename($_GET['file']) 

restituisce:

c:\fakepath\file.txt 

Quindi, in questo caso la risposta di Sun Junwen funziona meglio.

Su Firefox la variabile del file non include questo percorso falso.

6

Con SplFileInfo:

classe SplFileInfo Lo SplFileInfo offre un oggetto di alto livello orientato interfaccia per le informazioni per un singolo file.

Rif: 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

Prova questa:

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

E ' semplice. Per esempio:

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

L'uscita sarà:

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

Ci sono diversi modi per ottenere il nome del file e l'estensione. È possibile utilizzare il seguente che è facile da usare.

$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 Grazie per il vostro supporto –

1

Per fare questo nel minor numero di linee vorrei suggerire utilizzando il built-in DIRECTORY_SEPARATOR costante lungo con explode(delimiter, string) per separare il percorso in parti e poi semplicemente cogliere fuori l'ultimo elemento della matrice fornita.

Esempio:

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

Problemi correlati