Ваш существующий код содержит опечатку с дополнительным ,
, если вы используете его до версии php 7.3 . СМ. ЗДЕСЬ
<?php
$uploaded_type = 'install.msi';
if (preg_match('#\b(msi|php)\b#', $uploaded_type,)) {
echo $uploaded_type;
}
?>
Выход для 7.3.0 - 7.3.3
install.msi
Выход для 7.1.25 -7.2.16
Ошибка разбора: синтаксическая ошибка, неожиданный ')' в строке 3 Процесс завершился с кодом 255.
Поэтому, когда я удаляю трейлингзапятая ,
тогда отлично работает. SEE
<?php
$uploaded_type = 'install.msi';
if (preg_match('#\b(msi|php)\b#', $uploaded_type)) {
echo $uploaded_type;
}
?>
Но я бы предпочел non-regex способ с pathinfo()
и in_array()
, который будет работать для большинства версий php.Давайте сделаем это как -
<?php
$uploaded_type = 'install.msi';
$info = pathinfo($uploaded_type);
$valid_file_extensions = ['msi','php','jpg'] ;;
if (in_array($info["extension"],$valid_file_extensions)) {
echo $uploaded_type;
}
?>
DEMO: https://3v4l.org/QGrRr