![](/img/trans.png)
[英]PHP - How to increment a filename id within braces before the dot extension?
[英]Remove all dots in filename except the dot before the file extension
我正在嘗試清理文件名。
我想知道一種從文件名中刪除所有小數的方法,除了最后一個。 我需要保留最后一個,因為擴展名隨之而來。
例子:
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);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.