если заявление — php проверить формат файла wav?

Я использую следующий код, чтобы проверить WAV-файл в PHP.

$fp=$d=$data=$format=$bit=$chn="0";
$fp = fopen('ppk.wav', 'r'); fseek($fp, 20); $d = fread($fp, 18);

$data = unpack('vfmt/vch/Vsr/Vdr/vbs/vbis/vext', $d);
$format = array(0x0001 => 'PCM',0x0003 => 'IEEE Float',0x0006 => 'A-LAW',0x0007 => 'MuLAW',0xFFFE => 'Extensible',);
$bit = rtrim($data['sr'],"0") * rtrim($data['dr'],"0");
$chn = ($data['ch'] = 1) ? "Mono" : "Stereo";
fclose($fp);

echo "{$format[$data['fmt']]} {$data['sr']}Hz {$bit}bit {$chn}";

if ($format[$data['fmt']]!="A-LAW" || $data['ch']>1 || $data['dr']>8000 || $bit>64) {

echo "wrong format";

}

Это хорошо работает и показывает, если файл имеет неправильный формат.

Теперь я хотел бы проверить другой файл WAV ..

Таким образом, wav-файл может быть либо A-LAW моно 8 кГц 64 бит, либо PCM моно 16 кГц 512 бит.

Но я не уверен, как написать заявление if для проверки обоих?

например:

if ( Alaw mon 8khz <64bit || pcm mono 16khz <512)

Есть идеи ? Спасибо

0

Решение

Вы можете сгруппировать условия, описывающие действительность формата, и использовать ! отрицать это — если ни один набор условий не соответствует, весь if условие будет соответствовать:

if (!($format[$data['fmt']]=="A-LAW" && $data['ch']==1 && $data['dr']<=8000 && $bit<=64) &&
!($format[$data['fmt']]=="PCM" && $data['ch']==1 && $data['dr']<=16000 && $bit<=512)) {

echo "wrong format";
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]