subdirectorios only listar files directorios con buscar archivos php filenames

only - ¿Cómo obtengo un nombre de archivo de una ruta completa con PHP?



scandir php (14)

Basename no funciona para mí. Obtuve el nombre de archivo de un formulario (archivo). En Google Chrome (Mac OS X v10.7 (Lion)) la variable del archivo se convierte en:

c:/fakepath/file.txt

Cuando uso:

basename($_GET[''file''])

vuelve:

c:/fakepath/file.txt

Entonces, en este caso, la respuesta de Sun Junwen funciona mejor.

En Firefox, la variable del archivo no incluye este camino falso.

Por ejemplo, ¿cómo obtengo Output.map

de

F:/Program Files/SSH Communications Security/SSH Secure Shell/Output.map

con PHP?


Con SplFileInfo :

SplFileInfo La clase SplFileInfo ofrece una interfaz orientada a objetos de alto nivel para la información de un archivo individual.

Ref : 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"


Es sencillo. Por ejemplo:

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

El resultado será:

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


Estás buscando el basename .

El ejemplo del manual de 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" ?>


Hay varias formas de obtener el nombre y la extensión del archivo. Puede usar el siguiente que es fácil de usar.

$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


La función basename debería darle lo que desea:

Dada una cadena que contiene una ruta a un archivo, esta función devolverá el nombre base del archivo.

Por ejemplo, citando la página del manual:

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

O, en tu caso:

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

Obtendrás:

string(10) "Output.map"


Lo hice usando la función PATHINFO que crea una matriz con las partes de la ruta para que la use. Por ejemplo, puedes hacer esto:

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

Esto volverá:

/usr/admin/config test.xml xml test

¡El uso de esta función ha estado disponible desde PHP 5.2.0!

Entonces puedes manipular todas las partes como necesites. Por ejemplo, para usar la ruta completa, puede hacer esto:

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


Para hacer esto en la menor cantidad de líneas, sugeriría usar la constante DIRECTORY_SEPARATOR incorporada junto con explode(delimiter, string) para separar la ruta en partes y luego simplemente arrancar el último elemento en la matriz proporcionada.

Ejemplo:

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


Para obtener el nombre exacto del archivo del URI, usaría este método:

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


Prueba esto:

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



basename () tiene un error al procesar caracteres asiáticos como el chino.

Yo uso esto:

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


$filename = basename($path);


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