2010-11-14 85 views
0

我從數據庫檢索文件位置和名稱的最後幾個大字,都是這種格式PHP切割的文件名

http://domain.com/subdir/etc/etc/etc/picimage-niceone_Main-150x150.jpg

他們都是動態的,所以有數百人所有與不同的名字,但有一點是不變的是最後 - 然後是文件的尺寸。

我需要做的是剝去最後一切後 - 所以它變成以下內容。

http://domain.com/subdir/etc/etc/etc/picimage-niceone_Main.jpg

任何幫助將是真棒。

乾杯,

回答

1
$stringName = "picimage-niceone_Main-150x150.jpg"; 
$newName = substr($stringName,0,strrpos($stringName,"-")).substr($stringName,-4); 

這將刪除最後-和文件擴展名之間的任何東西。

+0

完美..謝謝 – Chris 2010-11-14 08:30:34

+1

我的答案可能不是最好的,但謝謝 – 2010-11-14 08:32:19

0
$newname = preg_replace("/-[^-.]*(\\.[a-zA-Z]*)$/", '$1', $oldname); 
1

preg_replace()

$url = preg_replace('/\-(\d+)x(\d+)(\.\w+)$/', '$3', $url); 

即找到一個連字符,數字,一個「X」,一個數字,一個擴展,只有後綴替換整個事情。

或者,如果你真的想知道這些寬度和高度分別爲(例如填充<IMG>標籤屬性:

$url = 'http://domain.com/subdir/etc/etc/etc/picimage-niceone_Main-150x150.jpg'; 
$regex = '/(.*?)-(\d+)x(\d+)(\.\w+)$/'; 
if (preg_match($regex, $url, $matches)) { 
    $width = $matches[2]; 
    $height = $matches[3]; 
    $url = $matches[1] . $matches[4]; 
} 
+0

我真的應該學習正則表達式有一天不要我.. – 2010-11-14 08:30:04