我想刪除從$thumbnail
幫我用PHP正則表達式
$thumbnail = "http://d2dsfsd.humbnails/20415/33-d148-45b1-9098-11e5c/thumbnail_8.jpg";
的_8
我一定是明確的..
有時$thumbnail
可能有_10
或_100
..我如何再處理?
我想刪除從$thumbnail
幫我用PHP正則表達式
$thumbnail = "http://d2dsfsd.humbnails/20415/33-d148-45b1-9098-11e5c/thumbnail_8.jpg";
的_8
我一定是明確的..
有時$thumbnail
可能有_10
或_100
..我如何再處理?
它會一直是「_8」嗎?如果是這樣只需使用:
$thumbnail = str_replace("_8.jpg", ".jpg", $thumbnail);
或者正則表達式可以用來替換任何一系列數字:
$thumbnail = preg_replace("#_[0-9]+\.jpg$#", ".jpg", $thumbnail);
我一定很清楚.. 有時$ thumbnail可能有_10或_100 .. –
這是相當簡單的
$thumbnail = preg_replace('/_\d+\.jpg/', '.jpg', $thumbnail);
我一定很清楚.. 有時$ thumbnail可能有_10或_100 ..我該如何處理? –
看我的編輯 - 如果它總是一個數字這將工作 – cordsen
假設文件名中沒有其他下劃線,你可以這樣做:
$thumbnail = preg_replace('/_\d+/', '', $thumbnail);
相當簡單的正則表達式;刪除下劃線後跟任意數字的數字。
如果您可能還有其他出現的下劃線後跟數字,而您只希望在末尾刪除該下劃線,則會變得更復雜一點,因爲您需要匹配.jpg
但不能刪除它。你會做這樣的事情:
$thumbnail = preg_replace('/_\d+\.jpg$/', '.jpg', $thumbnail);
這消除了.jpg
以及下劃線和數字,但隨後會將.jpg
再次替換字符串。請注意,我還添加了一個$
以將其綁定到字符串的末尾,以確保它匹配字符串的右側部分,即使它有其他匹配的匹配項。
對於可變整數,你可以使用:
$thumbnail = preg_replace('~_([\d]+)\.jpg$~', ".jpg", $thumbnail);
還是要多一點靈活
$thumbnail = preg_replace('#_\d+(?=\.jpg$)#', '', $thumbnail);
(?=\.jpg$)
領先了積極的外觀,確保_\d+
後有.jpg
然後字符串的結尾。
\d
是一個數字
+
指一種或多種
$
字符串
總是_8或任何數量的端部相匹配? _1212121.jpg? – dynamic