如何从PHP的完整路径中获得文件名?

例如,我如何获得Output.map

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

使用PHP吗?

436881 次浏览

你正在寻找basename

下面的例子来自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"
?>
$filename = basename($path);

basename函数会给你你想要的:

给定一个包含a的路径的字符串 文件,此函数将返回

.文件的基本名称

例如,引用手册的页面:

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

或者,在你的情况下:

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

你会得到:

string(10) "Output.map"

你可以使用basename ()函数。

为了从URI中获得确切的文件名,我将使用以下方法:

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

basename()在处理中文等亚洲字符时出现错误。

我用这个:

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

我已经使用PATHINFO函数完成了这一操作,该函数创建了一个数组,其中包含供您使用的部分路径!例如,你可以这样做:

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

这将返回:

/usr/admin/config
test.xml
xml
test

这个函数从PHP 5.2.0开始就可以使用了!

然后你就可以根据需要操纵所有部件了。例如,要使用完整路径,你可以这样做:

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

SplFileInfo:

SplFileInfo类提供了一个高级的面向对象

.

.

.

裁判: http://php.net/manual/en/splfileinfo.getfilename.php

$info = new SplFileInfo('/path/to/foo.txt');
var_dump($info->getFilename());

o / p:字符串(7)“foo.txt”

试试这个:

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

这很简单。例如:

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

输出将是:

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

有几种方法可以获取文件名和扩展名。你可以用下面这个简单易用的。

$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

为了在最少的行数内完成此操作,我建议使用内置的DIRECTORY_SEPARATOR常量以及explode(delimiter, string)将路径分离为多个部分,然后简单地提取所提供数组中的最后一个元素。

例子:

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

$image_path = "F:\Program Files\SSH Communications Security\SSH Secure Shell\Output.map";
$arr = explode('\\',$image_path);
$name = end($arr);