2014-03-07 34 views
0

中重命名來刪除映像名稱中的時間戳。如果我需要重命名像這樣的文件「file.d20140220-u162540.jpg」,使用php重命名功能將文件重命名爲「file.jpg」,語法是什麼?我嘗試重命名(「.d」,「* .jpg」);但這並不奏效,我猜測這是預期的,但我想知道正確的語法是什麼。提前謝謝了!通過在php

回答

0

您可以使用substr_replace

如果只是(你的情況),每次17個字符時,filejpg

$stringToReplace = 'file.d20140220-u162540.jpg'; 
$string = substr_replace($stringToReplace, "", 4, 18); 

echo $string; 

之間

SEE DEMO

輸出: file.jpg

更新:

所以,所有的文件都*.d20140220-u162540.jpg那麼你可以像這樣:

$stringToReplace = "opening-ceremony-600x450.d20140220-u162540.jpg"; 

    // Get the length from file 
    $removeTimestamp = strlen($stringToReplace); 

    // (d20140220-u162540.jpg === 21) 
    $removeTimestamp = floor($removeTimestamp - 21);   
    $example_1 = substr_replace($stringToReplace, "jpg", $removeTimestamp); 
    echo "Example 1: ".$example_1."\n\n"; 

    $stringToReplace = "marc-by-marc-jacobs-13-black-136831_3-90x90.d20140220-u071915.jpg"; 
    $removeTimestamp = strlen($stringToReplace); 
    $removeTimestamp = floor($removeTimestamp - 21); 
    $example_2 = substr_replace($stringToReplace, "jpg", $removeTimestamp); 

    echo "Example 2: ".$example_2; 

輸出:

例1:開放式-600x450.jpg

例2: marc-by-marc-jacobs-13-black-136831_3-90x90.jpg

SEE DEMO 2

+0

謝謝!例如,如果'file.d20140220-u162540.jpg'實際上是'opening-ceremony-600x450.d20140220-u162540.jpg',它會起作用嗎?我幾乎有一百萬個要通過,基本上標記爲'文件'的部分因每個圖像而異,'.2014 ....-'....... jpg'也因文件而異。顯示3個文件的例子我想改變的是:「marc-by-marc-jacobs-13-black-t-shirt_136831_3-900x675.d20140220-u071914.jpg」, 「marc-by-marc-jacobs-13- black-136831_3-90x90.d20140220-u071915.jpg「, 」marc-by-marc-jacobs-13-black-94x70.d20140220-u071914.jpg「 – user3387014

+0

此外,並非目錄中的所有文件都有'.d20140220- u071914.jpg'風格的名字。有些沒問題,只有'.jpg'擴展名。這就是爲什麼我希望找到一種方法來選擇那些有時間戳的擴展名並修改名稱(可能使用通配符?)的方法。 – user3387014

+0

我更新了我的答案 – aldanux

0

感謝您的幫助!我終於通過添加if語句來過濾掉所有受影響的文件,然後使用您的代碼重命名它。代碼如下:

$關鍵是文件名

if (strpos($key, '.d201402') !== FALSE){ 
$stringToReplace = $key; 
$removeTimestamp = strlen($stringToReplace); 
$removeTimestamp = floor($removeTimestamp - 21); 
$keytemp = substr_replace($stringToReplace, "jpg", $removeTimestamp); 
$grants = $s3->putObject(
array('Body' => file_get_contents("https://your-bucket-name.s3-us-west-2.amazonaws.com/".$key, 'r'), 
'Bucket' => $args['bucket'],'Key' => $keytemp, 'ACL' => 'public-read','ContentType' =>  'image/jpeg')); 
echo 'Filename replaced - '; 
echo $keytemp,"\n"; 

}