检测PHP中的SVG图像


Detecting SVG image in PHP

使用PHP,我想检查上传的图像是jpg、gif、png还是svg格式。我发现exif_imagetype函数可以检查文件格式,但它不支持svg格式。有什么方法可以检测PHP中的svg格式吗?

要扩展Victors-answer,可以使用mime_content_type('/path/to/file');(有关函数,请参阅php.net手册)并检查返回字符串是否等于image/svg+xml。类似于:

public function isSvg($filePath = '/path/to/file')
{
    return 'image/svg+xml' === mime_content_type($filePath);
}
mime_content_type(realpath('img/logo.svg'));

返回CCD_ 3。您的svg文件必须在第一行包含<xml>标记,如下所述https://stackoverflow.com/a/46366819,类似<?xml version="1.0" encoding="iso-8859-1"?>

mime_content_type($filePath);

如果svg文件从<svg xmlns="http://www.w3.org/2000/svg" width="210" height="80">启动,请小心我得到了"text/html";

pathinfo($_FILES['File']['name'], PATHINFO_EXTENSION)

尽可能使用内置功能,并且仅提取所需信息(选项=PATHINFO_EXTENSION)

试试这个-

$extensions= array("jpeg","jpg","png","svg","gif");    
$file_ext       = strtolower(end(explode('.',$file['name'])));
if(in_array($file_ext,$extensions)=== true){
    ...
    ...
}