如何將「_thumb」插入到正在進行浮點生成的文件中。正則表達式 - 如何在文件擴展名之前插入字符串
例如,我有一個網站允許用戶上傳圖片。該腳本獲取圖像,優化並保存到文件。我將如何讓它插入字符串「_thumb」的優化圖像?
我目前正在保存1個版本的otpimized文件。 CH-1268312613-photo.jpg
我想原來保存爲上面的字符串,但要附加 「_thumb」 之類的下列字符串 CH-1268312613-photo_thumb.jpg
如何將「_thumb」插入到正在進行浮點生成的文件中。正則表達式 - 如何在文件擴展名之前插入字符串
例如,我有一個網站允許用戶上傳圖片。該腳本獲取圖像,優化並保存到文件。我將如何讓它插入字符串「_thumb」的優化圖像?
我目前正在保存1個版本的otpimized文件。 CH-1268312613-photo.jpg
我想原來保存爲上面的字符串,但要附加 「_thumb」 之類的下列字符串 CH-1268312613-photo_thumb.jpg
不需要使用正則表達式。這將做到這一點:
$extension_pos = strrpos($filename, '.'); // find position of the last dot, so where the extension starts
$thumb = substr($filename, 0, $extension_pos) . '_thumb' . substr($filename, $extension_pos);
你爲什麼想要使用RegEx?擴展名是否總是.jpg
,並且只有一個擴展名?也許你可以用_thumb.jpg
替換它?
如果不那麼簡單,可以使用pathinfo這樣的函數來提取基本名稱+擴展名並在那裏進行替換。這也是沒有正則表達式,這可能在這裏矯枉過正:
$info = pathinfo($file);
$no_extension = basename($file, '.'.$info['extension']);
echo $no_extension.'_thumb.'.$info['extension']
$str = "ch-1268312613-photo.jpg";
print preg_replace("/\.jpg$/i","_thumb.jpg",$str);
preg_replace("/(\w+)\.(\w+)/","'\\1_thumb.\\2'","test.jpg");
我覺得用一個正則表達式是更爲有效的速度,真正爲 靈活性更好。
但我承認乍得的解決方案是優雅,假設你只有「.JPG」的出現曾經在弦有效
有一些事情是錯誤的。你沒有逃過這個模式的時期,所以這個模式可以匹配任何角色。另外,'\ w'不包含所有可能的文件名字符。 – 2010-03-12 00:21:34
的確如此,因爲我沒有把它標記爲代碼。被解釋爲像。 又是真的,但文件系統有權使用任何字符,我敢打賭不 – Darkyo 2010-03-12 00:25:43
,你可以做一個str_replace
代替正則表達式
$filename = str_replace(".jpg", "_thumb.jpg", $filename);
甚至好,substr_replace
剛剛插入字符串中間的某個位置:
$filename = substr_replace($filename, '_thumb', -4, 0);
,而不是採取正則表達式的路由(或其他污物e字符串操作),也許一些文件名相關的函數可能更容易處理:即pathinfo(獲取文件擴展名)和basename(獲取文件名減去擴展名)。
$ext = pathinfo($filename, PATHINFO_EXTENSION);
$thumb = basename($filename, ".$ext") . '_thumb.' . $ext;
編輯:對於非常相似的答案@tanascius對不起,想我應該已經檢查了小彈出而寫這篇(過了好一會兒,我被分心)。
對於'.tar.gz'這樣的東西是不會的。 – Skyzer 2015-05-10 04:03:44