PHP获取图像扩展以进行验证

PHP获取图像扩展以进行验证,php,Php,我正在调用get_file_extension()函数以返回文件类型:即jpg、gif等: function get_file_extension( $file ) { if( empty( $file ) ) { return false; } else { // if goes well then good to go $ext = pathinfo($file, PATHINFO_EXTENSION); //var_dump($

我正在调用get_file_extension()函数以返回文件类型:即jpg、gif等:

function get_file_extension( $file )  {
    if( empty( $file ) ) {
     return false;
    } else {

    // if goes well then good to go
        $ext = pathinfo($file, PATHINFO_EXTENSION);
    //var_dump($ext);

    // return file extension
    return $ext;

    }
}
当我执行var_dump($ext)时,会捕获文件类型,但是函数不会返回$ext

函数调用:

 $filename = stripslashes( $_FILES['file']['name'] );
 $ext = get_file_extension( $filename );
 $ext = strtolower( $ext );

 var_dump($ext);
如果我为$ext执行var_dump(),它将正确保留扩展,但当我尝试使用以下命令验证扩展时:

if(( $ext != "jpg" ) && ( $ext != "jpeg" ) && ( $ext != "png" ) && ( $ext != "gif" ) ) {
  $error = 'Unknown Image extension.';
  return false;
} 
错误消息不会显示在屏幕上

当我检查apache错误日志时,我得到以下错误:

PHP Strict Standards:  Only variables should be passed by reference
。。。。这与我的get_file_扩展函数中的此行有关:

$ext = substr(strrchr($file,'.'),1);
如果使用PATHINFO,则会出现类似错误:

$ext = pathinfo($file, PATHINFO_EXTENSION);

任何帮助都将不胜感激。

PATHINFO\u扩展更为最新,但未显示错误消息的原因是$error='';未在全局范围中定义。您也可能只是回显了错误消息。

为什么要对文件名使用字符串操作?PHP已经为您完成了所有这些,而且更加可靠。PHP有获取文件扩展名的方法。看看当我使用pathinfo时,我得到了以下错误:只有变量应该通过引用为行($ext=pathinfo($file,pathinfo_扩展名))传递;你应该回答你自己的问题,而不是将答案添加为更新。谢谢你指出这一点。答案已添加。