Ví dụ, làm thế nào để tôi nhận được Output.map
Làm cách nào để lấy tên tệp từ đường dẫn đầy đủ bằng PHP?
từ
F:\Program Files\SSH Communications Security\SSH Secure Shell\Output.map
với PHP?
Ví dụ, làm thế nào để tôi nhận được Output.map
Làm cách nào để lấy tên tệp từ đường dẫn đầy đủ bằng PHP?
từ
F:\Program Files\SSH Communications Security\SSH Secure Shell\Output.map
với PHP?
Bạn đang tìm kiếm basename
.
Các ví dụ từ cuốn hướng dẫn 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);
Chức năng basename
nên cung cấp cho bạn những gì bạn muốn:
Cho một chuỗi có chứa một đường dẫn đến một tập tin , chức năng này sẽ trả về tên cơ sở của tệp.
Ví dụ, trích dẫn trang của nhãn hiệu:
<?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"
?>
Hoặc, trong trường hợp của bạn:
$full = 'F:\Program Files\SSH Communications Security\SSH Secure Shell\Output.map';
var_dump(basename($full));
Bạn sẽ nhận được:
string(10) "Output.map"
Bạn có thể sử dụng Hàm basename().
Để có được tên tập tin chính xác từ URI, tôi sẽ sử dụng phương pháp này:
<?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() có một lỗi khi xử lý nhân vật châu Á như Trung Quốc.
tôi sử dụng này:
function get_basename($filename)
{
return preg_replace('/^.+[\\\\\\/]/', '', $filename);
}
Tôi đã làm điều này bằng cách sử dụng chức năng PATHINFO
mà tạo ra một mảng với các bộ phận của con đường để bạn có thể sử dụng! Ví dụ, bạn có thể làm điều này:
<?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);
?>
này sẽ trở lại:
/usr/admin/config
test.xml
xml
test
Việc sử dụng chức năng này đã có sẵn từ PHP 5.2.0!
Sau đó, bạn có thể thao tác tất cả các phần bạn cần. Ví dụ: để sử dụng đường dẫn đầy đủ, bạn có thể làm điều này:
$fullPath = $xmlFile['dirname'] . '/' . $xmlSchema['basename'];
Tên cơ sở không hoạt động đối với tôi. Tôi đã nhận tên tệp từ một biểu mẫu (tệp). Trong Google Chrome (Mac OS X v10.7 (Lion)) biến tập tin trở thành:
c:\fakepath\file.txt
Khi tôi sử dụng:
basename($_GET['file'])
nó sẽ trả về:
c:\fakepath\file.txt
Vì vậy, trong trường hợp này, câu trả lời Sun Junwen hoạt động tốt nhất.
Trên Firefox, biến của tệp không bao gồm đường dẫn giả này.
Với SplFileInfo:
SplFileInfo Các SplFileInfo lớp cung cấp một đối tượng cao cấp theo định hướng giao diện để thông tin cho một tập tin cá nhân.
Ref: 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"
Hãy thử điều này:
echo basename($_SERVER["SCRIPT_FILENAME"], '.php')
Đó là đơn giản. Ví dụ:
<?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);
?>
Kết quả sẽ là:
Array
(
[dirname] => /www/htdocs
[basename] => index.html
[extension] => html
[filename] => index
)
Có một số cách để có được tên file và phần mở rộng. Bạn có thể sử dụng cái sau đây dễ sử dụng.
$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
@peter Mortensen Cảm ơn sự hỗ trợ của bạn –
Để làm điều này trong các dòng ít nhất tôi sẽ đề nghị sử dụng được xây dựng trong DIRECTORY_SEPARATOR
liên tục cùng với explode(delimiter, string)
để tách các đường dẫn vào các bộ phận và sau đó chỉ cần nhổ ra khỏi yếu tố cuối cùng trong mảng cung cấp.
Ví dụ:
$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>
basename() có một lỗi khi ký tự quá trình Châu Á như Trung Quốc. –
Cảm ơn Sun, bạn vừa tiết kiệm cho tôi số giờ giết người vì ứng dụng của tôi sẽ được sử dụng ở nước ngoài. – SilentSteel
Rất lỗi ngay cả bây giờ –