使用 PHP 按 id 拉出 SVG 路径/组


Pulling out SVG path/group by id using PHP

所以我在尝试使用 PHP 操作 SVG 时遇到了一些复杂的问题。我想使用PHP而不是Javascript,因为它不是我正在做的交互式东西。基本上,我拥有的是一张地图,其中包含各种元素,这些元素已为每个国家/地区分配了ID。有些是组,有些是路径,如下所示:

<svg>
    <path ... id="NO" ... />
    <path ... id="CA" ... />
    ...
    <g ... id="RU" ...>
        <path .../>
        <path .../>
        <path .../>
    </g>
</svg>

从本质上讲,我想做的是给PHP一个对象一个的ID,然后它剥离了其他所有内容。因此,对于那些路径,它只会返回(如果它被赋予"CA"):

    <path ... id="CA" ... />

或者如果它被赋予"RU":

    <g ... id="RU">
        <path .../>
        <path .../>
        <path .../>
    </g>

这样做的原因是我可以单独使用图像的一部分,而无需创建数百个额外的.svg文件(这是很多工作,尤其是当它们都需要更新时)。

任何建议将不胜感激:)

由于 svg 是一个 XML 文件,因此您应该使用DOMDocument类。 文档在这里:

http://php.net/manual/en/class.domdocument.php

$dom = new DOMDocument();
$dom->loadXml($svgFileContent);
$child = $dom->getElementById('id-of-group'); //here you have an corresponding object
$xml = $dom->saveXML($child); //xml will contain xml string