PHP获取图像扩展以进行验证
我正在调用get_file_extension()函数以返回文件类型:即jpg、gif等: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($
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_扩展名))传递;你应该回答你自己的问题,而不是将答案添加为更新。谢谢你指出这一点。答案已添加。