我试图为“.msi”和“.php”预先匹配文件的名称,但即使该文件具有该类型的文件类型,它也不会检测到它。
这是我的代码:
$uploaded_type = $_FILES['image']['name'];
if (preg_match('#\b(msi|php)\b#', $uploaded_type,)) {
echo $uploaded_type; }
它不断通过,永远不会检测到它。我正在测试的文件名为“install.msi”感谢您的帮助。
如果你在php 7.3版本之前使用它,你现有的代码有一个额外的,
拼写错误。 SEE HERE
<?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;
}
?>
但我更喜欢使用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;
}
?>
但是:Kua zxsw指出