我正在尝试对文件名进行清理。
我想知道如何从文件名中除了最后一个以外,删除所有小数点。我需要保留最后一个小数点,因为它之后是文件的扩展名。
示例:
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'];
$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);