在PHP中检测SVG图像

时间:2015-12-17 21:43:20

标签: php image svg

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

7 个答案:

答案 0 :(得分:5)

永远不要相信文件扩展名来识别文件格式,文件扩展名可能是错误的或更改的。使用mimetype 例如

$finfo = new finfo(FILEINFO_MIME, "/usr/share/misc/magic");

请参阅http://www.php.net/manual/en/function.finfo-open.php

答案 1 :(得分:3)

要扩展Victors答案,您可以使用mime_content_type('/path/to/file');(请参阅php.net manual for the function)并检查返回字符串是否等于image/svg+xml。类似的东西:

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

答案 2 :(得分:1)

mime_content_type(realpath('img/logo.svg'));

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

答案 3 :(得分:0)

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

尽可能使用内置功能,和 仅提取所需信息(options = PATHINFO_EXTENSION)

答案 4 :(得分:0)

尝试这个-

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

答案 5 :(得分:0)

mime_content_type($filePath);

如果 svg 文件从 <svg xmlns="http://www.w3.org/2000/svg" width="210" height="80"> 开始,请小心 我收到“文本/html”

答案 6 :(得分:-1)

您可以使用explode()end()函数来获取此文件的扩展名:

$extention = end(explode('.', $name_of_file));

if ($extention == 'jpg' || $extention == 'svg' || $extention == 'png' || $extention == 'gif')
{
...
}

我希望它可以帮助你...