2016-01-27 81 views
0

我有「XML`這樣,取代對特定元素的XML/SVG元素屬性只

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

我試圖用rgb(更換rgba(,但其替代發生在數據的所有實例。我只想替換tspan標記的所有實例。 我試過str_replace,但把所有的實例都換成了數據。

輸出應該是這樣的

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

回答

0

嘗試此正則表達式:

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); 
0

您仍然可以使用str_replace函數,而是作爲「發現」時,使用參數的時間長一點的字符串:

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

但要小心,這是不是最好的在大量數據上做到這一點。

+0

'所以我不這麼認爲 – hemsbhardiya