<?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 () tem um erro ao processar caracteres asiáticos como chinês.
Jun
1
Obrigado Sun, você acabou de me salvar horas de eliminação de bugs, pois meu aplicativo será usado no exterior.
SilentSteel 03/03
11
Gostaria de sugerir pathinfosobre basenamecomo Metafaniel postado abaixo. pathinfo()fornecerá uma matriz com as partes do caminho. Ou, para o caso aqui, você pode apenas pedir especificamente o nome do arquivo. Assim, pathinfo('/var/www/html/index.php', PATHINFO_FILENAME)deve retornar 'index.php'a documentação PHP Pathinfo
OnethingSimple
7
@OnethingSimple Verifique os documentos novamente ... Por mais intuitivo que seja, você PATHINFO_BASENAMEdeve obter o máximo index.php. PATHINFO_FILENAMEvai te dar index.
levigroker
1
em qualquer caso, por um método compatível com unicode, mb_substr($filepath,mb_strrpos($filepath,'/',0,'UTF-16LE'),NULL,'UTF-16LE')- basta substituir UTF-16LE com o que CharacterSet seus usos do sistema de arquivos (NTFS e ExFAT usa UTF16)
hanshenrik
68
Eu fiz isso usando a função PATHINFOque cria uma matriz com as partes do caminho para você usar! Por exemplo, você pode fazer isso:
Dada uma sequência que contém um caminho para um arquivo, essa função retornará o nome base do arquivo.
Por exemplo, citando a página do 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"?>
Existem várias maneiras de obter o nome e a extensão do arquivo. Você pode usar o seguinte, que é 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
Eu não acho que é um erro, nos docs seu mencionados: 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. . Mas também prefiro usar preg_replace, porque o separador de diretório é diferente entre os sistemas operacionais. No Ubuntu `\` não é um separador de diretório e o nome de base não terá efeito sobre ele.
Para fazer isso no menor número de linhas, eu sugeriria o uso da DIRECTORY_SEPARATORconstante interna junto comexplode(delimiter, string) para separar o caminho em partes e, em seguida, simplesmente extrair o último elemento na matriz fornecida.
Para obter o nome exato do arquivo a partir do URI, eu usaria 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
sobrebasename
como Metafaniel postado abaixo.pathinfo()
fornecerá uma matriz com as partes do caminho. Ou, para o caso aqui, você pode apenas pedir especificamente o nome do arquivo. Assim,pathinfo('/var/www/html/index.php', PATHINFO_FILENAME)
deve retornar'index.php'
a documentação PHP PathinfoPATHINFO_BASENAME
deve obter o máximoindex.php
.PATHINFO_FILENAME
vai te darindex
.mb_substr($filepath,mb_strrpos($filepath,'/',0,'UTF-16LE'),NULL,'UTF-16LE')
- basta substituir UTF-16LE com o que CharacterSet seus usos do sistema de arquivos (NTFS e ExFAT usa UTF16)Eu fiz isso usando a função
PATHINFO
que cria uma matriz com as partes do caminho para você usar! Por exemplo, você pode fazer isso:Isso retornará:
O uso desta função está disponível desde o PHP 5.2.0!
Então você pode manipular todas as partes conforme necessário. Por exemplo, para usar o caminho completo, você pode fazer isso:
fonte
A
basename
função deve fornecer o que você deseja:Por exemplo, citando a página do manual:
Ou, no seu caso:
Você terá:
fonte
Existem várias maneiras de obter o nome e a extensão do arquivo. Você pode usar o seguinte, que é fácil de usar.
fonte
Com SplFileInfo :
Ref : http://php.net/manual/en/splfileinfo.getfilename.php
fonte
Tente o seguinte:
fonte
basename () tem um erro ao processar caracteres asiáticos como chinês.
Eu uso isso:
fonte
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.
. Mas também prefiro usar preg_replace, porque o separador de diretório é diferente entre os sistemas operacionais. No Ubuntu `\` não é um separador de diretório e o nome de base não terá efeito sobre ele.fonte
Para fazer isso no menor número de linhas, eu sugeriria o uso da
DIRECTORY_SEPARATOR
constante interna junto comexplode(delimiter, string)
para separar o caminho em partes e, em seguida, simplesmente extrair o último elemento na matriz fornecida.Exemplo:
fonte
Você pode usar a função basename () .
fonte
Para obter o nome exato do arquivo a partir do URI, eu usaria este método:
fonte
fonte
É simples. Por exemplo:
A saída será:
fonte
fonte