PHP:如何在大海捞针中找到多个针头

时间:2014-06-19 07:40:16

标签: php strpos

我正在从电子邮件中检索文件名,并想检查文件名是否包含音频文件扩展名(例如.mp3 .mp4 .ogg .wav ...)

寻找像str_list_pos这样的函数($ haystack,' .mp3 | .mp4 | .ogg | .wav');

由于

3 个答案:

答案 0 :(得分:0)

Regular expressions支持OR运算符|,遍历字符串列表并使用Preg match检查正则表达式匹配。

答案 1 :(得分:0)

为什么不使用这样的东西:

function match_file_extensions($file, $extensions = array()) {
    return !!preg_match('#^.*('.implode('|', $extensions).')$#', trim($file));
}

用法:

if(match_file_extensions('test.mp3', ['mp3', 'wav', 'avi'])){
    echo 'media file extension found';
}

它基本上创建了一个简单的正则表达式,它匹配任何以任何给定字符串结尾的字符串,然后将给定的字符串与它进行比较。

答案 2 :(得分:0)

给定一个包含文件扩展名的字符串,然后检查它是否在您提供的文件扩展名的文字列表中找到。 'stripos'功能对此很有用......

$fextFound = stripos('.mp3|.mp4|.ogg|.wav|', $fileExtension .'|') !== false;

注意:每个扩展名必须包含最后一个分隔符,因为我们必须找到完全匹配。

作为一个功能:

function validFileExtension($fileExtension, $validExtensions =  '.mp3|.mp4|.ogg|.wav|')
{
    return stripos($validExtensions, $fileExtension . '|') !== false;
}