2012-11-19 165 views
-3

我試圖獲取圖像文件擴展名並添加一些隨機數。 348678423.jpeg,343344343.jpg,32434343.gif,3434343.png等。獲取Php文件/圖像擴展名

所以,以下是我的PHP代碼:

function getExtension($str) 
{ 
    $i = strrpos($str,"."); 
if (!$i) { return ""; } 
$l = strlen($str) - $i; 
$ext = substr($str,$i+1,$l); 
return $ext; 
} 
    @$extension = getExtension($file); 
    $extension = strtolower($extension); 
    $image_named_uniq = uniqid().'.'.$extension; 

但是,當我贊同這個變量$ image_named_uniq它只是顯示隨機數,如:50aa5a2e0f425。這是應該顯示50aa5a2e0f425.jpg etc ..

我的代碼有什麼問題?

+1

可能的[如何在PHP中獲取文件類型]的副本(http://stackoverflow.com/questions/1740406/how-to-get-the-file-type-in​​-php)。什麼是文件擴展名問題的可能性從來沒有被問過在stackoverflow之前?看看相關部分。 –

+0

使用'pathinfo()'** pathinfo()返回關於路徑的信息:或者是一個關聯數組或者一個字符串,這取決於選項。**比寫你自己的實現要好。 [pathinfo.link](http://php.net/manual/en/function.pathinfo.php) – Nikola

回答

1

發表@jereon答案是正確的,而要做到這一點最簡單的方法。

但是,如果您想在不使用爆炸和結束的情況下提取更多關於該文件的信息,則可以簡單地使用內置於pathinfo()函數中的PHP。

參考:pathinfo()

<?php 
    $path_parts = pathinfo('/www/htdocs/inc/lib.inc.php'); 

    echo $path_parts['dirname'], "\n"; 
    echo $path_parts['basename'], "\n"; 
    echo $path_parts['extension'], "\n"; 
    echo $path_parts['filename'], "\n"; // since PHP 5.2.0 
?> 

這將返回

/www/htdocs/inc 
lib.inc.php 
php 
lib.inc 

由於$filename是一個數組,你需要通過它循環,以讀入pathinfo()。這可以很容易地使用像這樣的foreach循環來完成:

// Loop through the filenames array 
foreach($filename as $value){ 
    // Retrieve the path parts of each individual file 
    $path_parts[] = pathinfo($value); 
} 

// Write out the path parts array 
print_r($path_parts); 
+0

這是顯示錯誤消息:警告:pathinfo()期望參數1是字符串,在D:\ Software \ Installed \ xampp中給出的數組\ htdocs \ Classified-website \ user \ content \ uploader.php 47行 – Shibbir

+0

@Shibbir你傳遞給'pathinfo()'函數的是什麼?這顯然是一個數組 –

+0

我傳遞我的變量名爲$文件名$ filename = $ _FILES ['images'] ['name']; – Shibbir

5

如果你只需要擴展:

echo end(explode('.', $str)); 
+1

我也推薦在'$ str'上使用'strtolower' –

+0

+1最簡單的方法 –

+0

爲了更好性能使用'$ ext = substr($ file,strrpos($ file,'。')+ 1);' –

2

您可以使用pathinfo()得到擴展

$path_parts = pathinfo($filename); 
echo $path_parts['extension']; 
0

最簡單的方法是使用pathinfo()。需要注意的是,結果是基於文件名和執行文件中沒有內省(如重命名爲logo.php將導致.php文件擴展名的圖像logo.jpg。如果你想獲得的文件類型由它的內容使用the fileinfo extension