PHP / preg_replace:删除多媒体扩展

时间:2013-09-01 11:43:22

标签: php preg-replace design-patterns strip

我想通过preg_replace从文件名中删除所有多媒体扩展。

你能帮我为preg_replace创建模式吗?

  

.m4a .wav .ogg .flac .avi .flv .mov .m3u .mid .webm .mkv   .ASF

     

.mpg .mpeg .mp(INT).mpg(INT).mpeg(INT)=>熔点(?:?EG)(\ d +)

     

.aif AND .aiff => AIF(?:?F)

     

.3gp AND .3gpp => 3GP(:P)

     

.wma AND .wmv => WM(A | v)的

<?php
$filename = 'bla.mp3 bla bla.mid.mp3.mp4.mid.mp10.mpeg.mpg.mpg10';
echo preg_replace('/[\.(m4a|wav|ogg|flac|avi|flv|mov|m3u|mid|webm|mkv|asf|wm(a|v)|mp(\d+)|aif(?:f?)|3gp(?:p?))]*$/', '', $filename);
?>

非常感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

试试这个:

<?php
$filename = 'bla.mp3 bla bla.mid .mp3 .mp4 .mid .mp10 .mpeg .mpg .mpg10';
echo preg_replace('/\.(m4a|wav|ogg|flac|avi|flv|mov|wmv|m3u|mid|wma|webm|mkv|asf|mp\d|aif(?:f?)|3gp(?:p?))*/', '', $filename);
?>

更新

echo preg_replace('/\.(mpg10|mpeg|mpg|m4a|wav|ogg|flac|avi|flv|mov|wmv|m3u|mid|wma|webm|mkv|asf|mp\d|aif(?:f?)|3gp(?:p?))*/', '', $filename);

答案 1 :(得分:0)

试试这个

$filename = 'bla.mp3 bla bla.mid.mp3.mp4.mid.mp10.mpeg.mpg.mpg10';
echo preg_replace('/\.(m4a|wav|ogg|flac|avi|flv|mov|wmv|m3u|mid|wma|webm|mkv|asf|mp(\d+)|aif(?:f?)|3gp(?:p?)|mp(eg(\d+)?|g(\d+)?))/g', '', $filename);

你可以查看here


修改

echo preg_replace('/\.(m4a|wav|ogg|flac|avi|flv|mov|wmv|m3u|mid|wma|webm|mkv|asf|mp(\d+)|aif(?:f?)|3gp(?:p?)|mpe?g\d*)/g', '', $filename);

你可以查看here


最终修改

已移除处理mp(\d+)并处理mpe?g\d* 并且只使用mp(e?g)?\d*处理这两种情况,这是最简单的 - 我的拙见 -

echo preg_replace('/\.(m4a|wav|ogg|flac|avi|flv|mov|wmv|m3u|mid|wma|webm|mkv|asf|aif(?:f?)|3gp(?:p?)|mp(e?g)?\d*)/g', '', $filename);

你可以查看here

作者编辑

这是它的简化形式

echo preg_replace('/\.a(if(?:f?)|sf|vi)|fl(ac|v)|m(3u|4a|id|kv|ov|(p(e?g)?\d*))|ogg|‌​w(av|ebm|m(a|v))/g', '', $filename);