我想知道一種方法來刪除文件名中的所有小數,但最後一個。我需要保留最後一個,因爲擴展是這樣的。刪除所有小數,但最後
例:
abc.def.ghij-klmnop.q234.mp3
這個文件看起來應該像
abcdefghij-klmnopq234.mp3
有些功能擴展超過3字符長。
我想知道一種方法來刪除文件名中的所有小數,但最後一個。我需要保留最後一個,因爲擴展是這樣的。刪除所有小數,但最後
例:
abc.def.ghij-klmnop.q234.mp3
這個文件看起來應該像
abcdefghij-klmnopq234.mp3
有些功能擴展超過3字符長。
您可以使用正則表達式以積極的前瞻。就像這樣:
$withdots = 'abc.def.ghij-klmnop.q234.mp3';
$nodots = preg_replace('/\.(?=.*\.)/', '', $withdots);
執行上面後,$nodots
將包含abcdefghij-klmnopq234.mp3
。正則表達式基本上是說匹配所有的時期,然後是另一個時期。所以最後一段時間不匹配。我們用空字符串替換所有匹配,並且剩下所需的結果。
應該這樣做:
$file = 'abc.def.ghij-klmnop.q234.mp3';
$parts = pathinfo($file);
$filename = str_replace('.', '', $parts['filename']).'.'.$parts['extension'];
你也可以這樣做,它應該更快,然後使用pathinfo & str_replace。
$parts = explode('.', 'abc.def.ghij-klmnop.q234.mp3');
$ext = array_pop($parts);
$nodots = implode('', $parts) . '.' . $ext;
假設$s
是文件的名稱。
$s = (($i = strrpos($s, '.')) === false) ? $s :
str_replace('.','',substr($s,0,$i)).substr($s,$i);
最容易閱讀的解決方案,但如果文件沒有擴展名,它將無法正常工作。 – Matthew 2011-06-11 05:19:57
順便說一句,這真的很酷。 – ImaginedDesign 2011-06-12 19:48:58