2011-09-27 44 views
33

Tôi có một tập lệnh tải lên mà tôi cần kiểm tra phần mở rộng của tệp, sau đó chạy các chức năng riêng biệt dựa trên đuôi tệp đó. Có ai biết tôi nên sử dụng mã nào không?Mở rộng tập tin kiểm tra PHP

if (FILE EXTENSION == ???) 
{ 
FUNCTION1 
} 
else if 
{ 
FUNCTION2 
} 
+0

thể trùng lặp của [Làm thế nào để trích xuất một phần mở rộng tập tin trong PHP?] (http://stackoverflow.com/questions/173868/how-to-extract-a-file-extension-in-php) –

Trả lời

78

pathinfo là những gì bạn đang tìm kiếm

PHP.net

$file_parts = pathinfo($filename); 

switch($file_parts['extension']) 
{ 
    case "jpg": 
    break; 

    case "exe": 
    break; 

    case "": // Handle file extension for files ending in '.' 
    case NULL: // Handle no file extension 
    break; 
} 
+1

Trường hợp không có phần mở rộng là gì? trường hợp NULL? trường hợp ""? – swl1020

+2

Đã cập nhật. chuỗi rỗng '" "' dành cho các tệp, sau đó kết thúc bằng '.'. 'NULL' không có phần mở rộng tập tin. Bạn có thể phá vỡ các tuyên bố trường hợp, nhưng đối với ví dụ tôi chỉ nhóm chúng lại với nhau. – Brombomb

14
$info = pathinfo($pathtofile); 
if ($info["extension"] == "jpg") { .... } 
+0

Tôi đã sử dụng mã này trên một phần của trang web của mình. Tuy nhiên, khi thực hiện nó cùng với 'echo '$ info" 'nó luôn trả về giá trị Array. Tại sao điều này? –

+0

@ user2910074 Câu hỏi này là OLD và tôi sẽ yêu cầu bạn xem mã của mình để cung cấp bất kỳ trợ giúp nào. Tôi khuyên bạn nên đăng câu hỏi ở đây trên SO –

-1
$original_str="this . is . to . find"; 
    echo "<br/> Position: ". $pos=strrpos($original_str, "."); 
    $len=strlen($original_str); 
    if($pos >= 0) 
    { 
    echo "<br/> Extension: ". substr($original_str,$pos+1,$len-$pos) ; 
    } 
+0

@jurchiks 'này. Là . đến . find' là tên tệp hoàn toàn hợp lệ trong hầu hết các hệ điều hành. – meagar

+0

Cảm ơn @meagar. Cảm ơn nhận xét hợp lệ của bạn. – Jasmeen

2
$file_parts = pathinfo($filename); 

$file_parts['extension']; 
$cool_extensions = Array('jpg','png'); 

if (in_array($file_parts['extension'], $cool_extensions)){ 
    FUNCTION1 
} else { 
    FUNCTION2 
} 
0

Đối với php 5.3+ bạn có thể sử dụng lớp SplFileInfo()

$spl = new SplFileInfo($filename); 
print_r($spl->getExtension()); //gives extension 

Cũng kể từ khi bạn đang kiểm tra phần mở rộng cho tập tin tải lên, tôi khuyên bạn nên sử dụng các loại mime thay vì ..

Đối với php 5.3+ sử dụng lớp finfo

$finfo = new finfo(FILEINFO_MIME); 
print_r($finfo->buffer(file_get_contents($file name)); 
Các vấn đề liên quan