2009-09-13 81 views

Trả lời

329

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

basename() có một lỗi khi ký tự quá trình Châu Á như Trung Quốc. –

+0

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

+1

Rất lỗi ngay cả bây giờ –

6
$filename = basename($path); 
10

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

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

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); 
} 
51

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']; 
1

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.

6

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"

4

Hãy thử điều này:

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

Đó 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 
) 
5

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 
+0

@peter Mortensen Cảm ơn sự hỗ trợ của bạn –

1

Để 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' 
0
<?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>

Các vấn đề liên quan