<?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,'?'));?>
pathinfomásbasenamecomo 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_BASENAMEobtener el contenido completoindex.php.PATHINFO_FILENAMEle 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
PATHINFOque 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
basenamefunció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_SEPARATORconstante 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