2010-09-27 43 views
2

如果我有filename.jpg,用PHP如何改變它也filename123456789.jpg,其中123456789是一個時間戳,我目前做到這一點,改變一個字符串用PHP

$name = $filename; 
$parts = explode(".", $name); 
$filename = $parts[0].time().'.'.$parts[1]; 

然而,這僅僅只是我留下與123456789.

+3

它爲我工作得很好 – 2010-09-27 09:17:52

+3

注意,有可能是在文件名 – 2010-09-27 09:20:26

+1

任何人都可以解釋我upvoting這個問題的原因,更多的點? – 2010-09-27 09:25:19

回答

7

您的方法也可以很好地工作,但如果文件名有多個點,則會中斷。我寧願用PATHINFO()函數來實現這一點:

0

調試(輸出),您的輸入步驟,找到錯誤

function debug($var, $label = '') { 
    echo $label 
     . '<pre>' 
     . print_r($var, true) 
     . '</pre>'; 
} 

$name = 'filename.bug.test.jpg'; 
debug($name, 'old filename'); 
$parts = explode('.', $name); 
debug($parts, 'filenameparts'); 
$ext = array_pop($parts); 
$prefix = implode('.', $parts); 
$newName = $prefix . time() . '.' . $ext; 
debug($newName, 'new filename'); 

如上面提到的使用pathinfo代替explode

我用過explode,我用過一個虛擬文件名。

0

那是一個沒有腦子:

function getFileName($filename){ 
preg_match('#([^/]+)\.([\w]+)$#',$filename,$match); 
return $match[1].time().'.'.$match[2]; 
} 
+1

爲什麼會在pathinfo()存在時涉及preg_match()? – Quamis 2010-09-27 11:34:13

+0

導致其他人已經做到了,許多道路導致羅馬和所有 – Hannes 2010-09-27 11:43:37