Question

I want strip all multimedia extensions from filename by preg_replace.

Would you help me create pattern for preg_replace?

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

.mpg .mpeg .mp(INT) .mpg(INT) .mpeg(INT) => mp(?: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);
?>

Very thanks for help!

Was it helpful?

Solution

try this

$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);

you can check it out here


Edit

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);

you can check it out here


Final Edit

removed handling mp(\d+) and handling mpe?g\d* and used only mp(e?g)?\d* to handle both cases and that is the simplest it could get -in my humble opinion-

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);

you can check it out here

author edit

this is the simplified form of it

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);

OTHER TIPS

try this:

<?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);
?>

Update:

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);
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top