如何从PHP的完整path获取文件名?

例如,如何获取Output.map

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

用PHP?

你正在寻找基地名称 。

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

我已经做了这个使用函数PATHINFO这将创build一个数组与path的部分供您使用! 例如,你可以这样做:

 <?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起可以使用这个函数! 然后,您可以根据需要操作所有零件。 例如要使用完整的path,你可以这样做:

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

我希望这个答案也有帮助,你也可以使用这个方法。 祝你有美好的一天 ;)

basename函数应该给你你想要的:

给定一个包含文件path的string,该函数将返回文件的基本名称。

例如,引用手册的页面:

 <?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" 
 $filename = basename($path); 

来到这里得到了答案,但也find另一个(一个不在这里),所以张贴它

现在用SplFileInfo

SplFileInfo SplFileInfo类为单个文件的信息提供高级面向对象的接口。

参考 : 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”

在处理亚洲字符(如中文)时,basename()有一个错误。

我使用这个:

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

有几种方法可以获得文件名和扩展名,您可以使用一个易于使用的文件名和扩展名。

 $url = 'http://www.nepaltraveldoor.comhttp://img.dovov.comtrekking/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 

尝试这个:

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

你可以使用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, '?')); ?> 

基本名称不适用于我。 我从表单(文件)获得了文件名。 在谷歌浏览器(Mac OS X狮子)文件variables变成:

 c:\fakepath\file.txt 

当我使用:

 basename($_GET['file']) 

它返回:

 c:\fakepath\file.txt 

所以在这种情况下,孙俊文的答案效果最好。

在Firefox上,文件的variables不包含这个假path。

要做到这一点在最less的线我会build议使用内置的DIRECTORY_SEPARATOR常数与explode(delimiter, string)将path分成部分,然后简单地拔掉提供的数组中的最后一个元素。

例:

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

这很简单。 例如:

  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)

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