Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHP识别有效的SVG_Php_Svg_Graphicsmagick - Fatal编程技术网

使用PHP识别有效的SVG

使用PHP识别有效的SVG,php,svg,graphicsmagick,Php,Svg,Graphicsmagick,我需要检查上传的文件类型SVG。不幸的是,没有IMAGETYPE_SVG并且finfo_文件在我的机器上不工作。如何确保上传有效?但是,我确实可以通过system()访问GraphicsMagick,您只需检查它是否为.svg $path = $_FILES['uploadedfile']['name']; //gets extension $e = pathinfo($path, PATHINFO_EXTENSION); if($e == "svg"){ //it is svg }else{

我需要检查上传的文件类型SVG。不幸的是,没有
IMAGETYPE_SVG
并且
finfo_文件
在我的机器上不工作。如何确保上传有效?但是,我确实可以通过
system()

访问GraphicsMagick,您只需检查它是否为.svg

$path = $_FILES['uploadedfile']['name'];
//gets extension
$e = pathinfo($path, PATHINFO_EXTENSION);
if($e == "svg"){
//it is svg
}else{
//not svg 
}

我使用GraphicsMagick找到了一个解决方案:

$valid = FALSE;
@exec("gm identify +ping filename", $result);
if (is_array($result)) {
    if (in_array("MVG", explode(" ", implode(" ", $result))) || in_array("SVG", explode(" ", implode(" ", $result)))) $valid = TRUE;
}

达到什么水平?SVG文件是XML文件,那么检查有效的XML文件就足够了吗?是的,我刚刚从XMLReader尝试了isValid,但它返回true,尽管我使用了PNG而不是SVG。这似乎不起作用。当然我不会使用它,任何人都可以将任何文件命名为.svg