2011-06-21 47 views
-2

我想刪除從$thumbnail幫我用PHP正則表達式

$thumbnail = "http://d2dsfsd.humbnails/20415/33-d148-45b1-9098-11e5c/thumbnail_8.jpg"; 

_8我一定是明確的..

有時$thumbnail可能有_10_100 ..我如何再處理?

+2

總是_8或任何數量的端部相匹配? _1212121.jpg? – dynamic

回答

1

它會一直是「_8」嗎?如果是這樣只需使用:

$thumbnail = str_replace("_8.jpg", ".jpg", $thumbnail); 

或者正則表達式可以用來替換任何一系列數字:

$thumbnail = preg_replace("#_[0-9]+\.jpg$#", ".jpg", $thumbnail); 
+0

我一定很清楚.. 有時$ thumbnail可能有_10或_100 .. –

0

這是相當簡單的

$thumbnail = preg_replace('/_\d+\.jpg/', '.jpg', $thumbnail); 
+0

我一定很清楚.. 有時$ thumbnail可能有_10或_100 ..我該如何處理? –

+0

看我的編輯 - 如果它總是一個數字這將工作 – cordsen

1

假設文件名中沒有其他下劃線,你可以這樣做:

$thumbnail = preg_replace('/_\d+/', '', $thumbnail); 

相當簡單的正則表達式;刪除下劃線後跟任意數字的數字。

如果您可能還有其他出現的下劃線後跟數字,而您只希望在末尾刪除該下劃線,則會變得更復雜一點,因爲您需要匹配.jpg但不能刪除它。你會做這樣的事情:

$thumbnail = preg_replace('/_\d+\.jpg$/', '.jpg', $thumbnail); 

這消除了.jpg以及下劃線和數字,但隨後會將.jpg再次替換字符串。請注意,我還添加了一個$以將其綁定到字符串的末尾,以確保它匹配字符串的右側部分,即使它有其他匹配的匹配項。

0

對於可變整數,你可以使用:

$thumbnail = preg_replace('~_([\d]+)\.jpg$~', ".jpg", $thumbnail); 
2

還是要多一點靈活

$thumbnail = preg_replace('#_\d+(?=\.jpg$)#', '', $thumbnail); 

(?=\.jpg$)領先了積極的外觀,確保_\d+後有.jpg然後字符串的結尾。

\d是一個數字

+指一種或多種

$字符串