2011-10-05 65 views
0

在前端我提供用戶重命名他的任何圖像。這是通過JavaScript提示獲取新名稱,jQuery ajax和php。文件重命名時,它必須在2個文件上生效,如下面鏈接所示。網址中的1是動態的。這是用戶名。事情是我只想替換文件名中的product,而不是後面的_1317804260。在第二個鏈接中,我們在文件名前面有thumb_。所以我們只想用新的重命名替換product。在這方面工作,似乎我需要多次使用explode()才能完成工作。有沒有更簡單的方法來做到這一點。jQuery ajax php重命名文件名的一部分

http://domain.com/userfiles/1/images/product_1317804260.gif 
http://domain.com/userfiles/1/images/thumbnails/thumb_product_1317804260.gif 

所以基本上如果一個新的名稱爲newname文件的最終輸出應

newname_1317804260.gif 
thumb_newname_1317804260.gif 
+0

你想讓結果具有整個URL還是隻有最後一部分? – deviousdodo

+0

最後部分會很好 – Pinkie

回答

1
$oldName = "http://domain...product_userid.gif"; 

$newName = "what the user entered"; 

$parts = explode('/', $oldName); 
$user_path = $parts[3] . '/' . $parts[4]; // it will contain userfiles/1 

$parts = explode("_", $oldName); 

$product_name = $new_name . "_" . end($parts); 
$thumb_name = "thumb_" . $product_name; 
+0

這將工作。但在這種情況下,我還需要從URL'/ userfiles/1 /'中使用它。有什麼好辦法得到這 – Pinkie

+0

我已經更新了我的答案與該信息。這就是我之前問過你的原因,如果你只需要最後一部分或更多。 – deviousdodo

1

JS:

var tmpName = "product_1317804260.gif".split("_") 
var newName = "newname" + "_" + tmpName[1] 

PHP:

$tmpName = explode("_", "product_1317804260.gif"); 
$newName = "newname" . "_" . $tmpName[1]; 
+0

什麼是文件名包含下劃線的分配。我們如何告訴它尋找最後一個。 – Pinkie

+0

然後使用tmpName [tempName.length] –

+0

謝謝,在這種情況下,我還需要獲取部分路徑。我嘗試這樣分裂,但它不起作用。這是爲什麼 。 'var $ x ='/1/images/Oil_and_gas_icon.gif'; alert($ x.split(「/」)[0]); ' – Pinkie