我一直在尝试更改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更改我的填充属性值。我们将不胜感激。
答案 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');}
}