使用php更改svg fill属性值

时间:2016-11-09 11:51:49

标签: php dom svg attributes

我一直在尝试更改svg图片中文本标记的fill属性。 但它没有用。

文字标记

<text style="font-variant:normal;font-weight:bold;font-size:9.99989986px;font-family:'Times New Roman';-inkscape-font-specification:TimesNewRomanPSMT-Bold;writing-mode:lr-tb;fill-opacity:1;fill-rule:nonzero;stroke:none"
         transform="matrix(0,1,1,0,27.7761,21.4725)"
         fill="#231f20"
         name="mytitle"
         id="mytitle"
         data-svg="text">
        <tspan
           id="tspan7549"
           sodipodi:role="line"
           y="0"
           x="0">TEST TEXT</tspan>
      </text>

php代码

$dom->loadXML($svgString);
foreach($dom->getElementById('mytitle') as $mytitle) {
                        $mytitle->setAttribute('http://www.w3.org/2000/svg','fill','#ffffff');

                }
$dom->saveXML()

我不知道为什么这不起作用。我已经编写了一个替换图像的代码($dom->getElementsByTagName('image')),并且它的工作非常完美。

我想使用php更改我的填充属性值。我们将不胜感激。

2 个答案:

答案 0 :(得分:1)

setAttribute()只需要两个参数。三个参数版本为setAttributeNS()

http://php.net/manual/en/domelement.setattribute.php http://php.net/manual/en/domelement.setattributens.php

但是,在SVG元素中设置属性时,不需要使用命名空间。以下应该有效:

$mytitle->setAttribute('fill','#ffffff');

答案 1 :(得分:0)

我已经解决了这个问题..

$nodes = $dom->getElementsByTagName('text');

                    foreach($nodes as $node) {
                        if($node->getAttribute('id')=='mytitle'){$node->setAttribute('fill','#ffffff');}

                }