【问题标题】:PHP / preg_replace: Removing multimedia extentionsPHP / preg_replace:删除多媒体扩展
【发布时间】:2013-09-01 11:43:21
【问题描述】:

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

你能帮我为 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);
?>

非常感谢您的帮助!

【问题讨论】:

    标签: php preg-replace design-patterns strip


    【解决方案1】:

    试试这个

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

    【讨论】:

    • 是的,效果更好,但是否可以简化 mpeg 格式的模式?
    • 也许是 mp(?:e|eg?)\d+ ?
    • 添加了对简化 mp3,mp4,mpg,mpe,mpeg,mpg10,mpe3,mpeg2 的答案的编辑
    • 编辑了排除 mpe4 的答案,因为您没有描述您希望它被捕获
    • 如果有帮助请投票或标记为答案或两者兼而有之:D
    【解决方案2】:

    试试这个:

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

    【讨论】:

    • 好的,但是你没有为他们创建模式我只是重新使用了你的模式并更正了它,你也可以包含它们,或者查看我的更新
    • 对不起,我的英文不太好,您听不懂,非常感谢您的回答
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-24
    相关资源
    最近更新 更多