如何从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>