仅替换特定元素的xml / svg元素属性

时间:2016-01-27 07:45:03

标签: php xml svg str-replace

我有像这样的'XML`,

<text>
    <tspan fill='rgba(0,0,0,0)'>abc</tspan>
</text>
<rect fill='rgba(0,0,0,0)'></rect>

我正在尝试将rgba(替换为rgb(,但它替换所有实例都发生在数据中。我只想替换tspan标记的所有实例。 我尝试了str_replace,但将所有实例替换为数据。

输出应该如下所示

<text>
    <tspan fill='rgb(0,0,0,0)'>abc</tspan>
</text>
<rect fill='rgba(0,0,0,0)'></rect>

2 个答案:

答案 0 :(得分:0)

您仍然可以使用str_replace,但请使用&#39; find&#39;参数有点长的字符串:

str_replace("<tspan fill='rgba(0,0,0,0)", "<tspan fill='rgb(0,0,0,0)", $your_string);

但要小心,这不是对大量数据执行此操作的最佳方法。

答案 1 :(得分:0)

试试这个regExp:

rgba(?=(.*)<\/tspan>)

Tested Here - RegEx101

$re = "/rgba(?=(.*)<\\/tspan>)/"; 
$str = "<text><tspan stroke='' opacity='' fill='rgba(0,0,0,0)'>abc</tspan><tspan fill='rgba(0,0,0,0)'><h1>anything</h1></tspan></text><rect fill='rgba(0,0,0,0)'></rect>"; 
$subst = "rgb"; 

$result = preg_replace($re, $subst, $str);