<?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 () tiene un error cuando procesa caracteres asiáticos como el chino.
Sun Junwen
1
Gracias Sun, me has ahorrado horas de eliminación de errores ya que mi aplicación se usará en el extranjero.
SilentSteel
11
Sugeriría pathinfomás basenamecomo Metafaniel publicado a continuación. pathinfo()le dará una matriz con las partes de la ruta. O para el caso aquí, puede pedir específicamente el nombre del archivo. Por pathinfo('/var/www/html/index.php', PATHINFO_FILENAME)lo tanto, debe devolver la 'index.php'documentación de PHP Pathinfo
OnethingSimple
77
@OnethingSimple Revise los documentos nuevamente ... aunque sea intuitivo, querrá PATHINFO_BASENAMEobtener el contenido completo index.php. PATHINFO_FILENAMEle dará index.
levigroker
1
en cualquier caso, de un método compatible con Unicode, mb_substr($filepath,mb_strrpos($filepath,'/',0,'UTF-16LE'),NULL,'UTF-16LE')- basta con sustituir UTF-16LE con lo characterSet sus usos del sistema de archivos (NTFS y ExFAT utiliza UTF16)
hanshenrik
68
¡He hecho esto usando la función PATHINFOque crea una matriz con las partes de la ruta para que la uses! Por ejemplo, puedes hacer esto:
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"?>
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
Yo no creo que es un error, en los documentos de su mencionarse: 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. . Pero también prefiero usar preg_replace, porque el separador de directorios difiere entre sistemas operativos. En Ubuntu `\` no es un separador directoy el nombre base no tendrá ningún efecto sobre él.
Para hacer esto en la menor cantidad de líneas, sugeriría usar la DIRECTORY_SEPARATORconstante incorporada junto conexplode(delimiter, string) para separar la ruta en partes y luego simplemente arrancar el último elemento en la matriz provista.
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,'?'));?>
pathinfo
másbasename
como Metafaniel publicado a continuación.pathinfo()
le dará una matriz con las partes de la ruta. O para el caso aquí, puede pedir específicamente el nombre del archivo. Porpathinfo('/var/www/html/index.php', PATHINFO_FILENAME)
lo tanto, debe devolver la'index.php'
documentación de PHP PathinfoPATHINFO_BASENAME
obtener el contenido completoindex.php
.PATHINFO_FILENAME
le daráindex
.mb_substr($filepath,mb_strrpos($filepath,'/',0,'UTF-16LE'),NULL,'UTF-16LE')
- basta con sustituir UTF-16LE con lo characterSet sus usos del sistema de archivos (NTFS y ExFAT utiliza UTF16)¡He hecho esto usando la función
PATHINFO
que crea una matriz con las partes de la ruta para que la uses! Por ejemplo, puedes hacer esto:Esto devolverá:
¡El uso de esta función ha estado disponible desde PHP 5.2.0!
Luego puede manipular todas las partes que necesite. Por ejemplo, para usar la ruta completa, puede hacer esto:
fuente
La
basename
función debería darte lo que quieres:Por ejemplo, citando la página del manual:
O, en tu caso:
Obtendrás:
fuente
Hay varias formas de obtener el nombre y la extensión del archivo. Puede usar el siguiente, que es fácil de usar.
fuente
Con SplFileInfo :
Ref : http://php.net/manual/en/splfileinfo.getfilename.php
fuente
Prueba esto:
fuente
basename () tiene un error al procesar caracteres asiáticos como el chino.
Yo uso esto:
fuente
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.
. Pero también prefiero usar preg_replace, porque el separador de directorios difiere entre sistemas operativos. En Ubuntu `\` no es un separador directoy el nombre base no tendrá ningún efecto sobre él.fuente
Para hacer esto en la menor cantidad de líneas, sugeriría usar la
DIRECTORY_SEPARATOR
constante incorporada junto conexplode(delimiter, string)
para separar la ruta en partes y luego simplemente arrancar el último elemento en la matriz provista.Ejemplo:
fuente
Puede usar la función basename () .
fuente
Para obtener el nombre exacto del archivo del URI, usaría este método:
fuente
fuente
Es sencillo. Por ejemplo:
La salida será:
fuente
fuente