PHP替换<;圆圈>;介于<;g>;具有特定ID的标记

PHP替换<;圆圈>;介于<;g>;具有特定ID的标记,php,replace,tags,preg-replace,Php,Replace,Tags,Preg Replace,对不起,如果标题不是那么好 我正在使用PHP编写一个脚本,如果位于具有特定id的中,它将更改的填充颜色 以下是特定字符串: <g id="stroke"> <circle cx="6.628mm" cy="23.164mm" r="1.50mm" fill="#B8BBC0" stroke="#000000" stroke-width="0.282mm"/> <circle cx="3.920mm" cy="20.170mm" r="1.50mm" fill="

对不起,如果标题不是那么好

我正在使用PHP编写一个脚本,如果
位于具有特定id的
中,它将更改
的填充颜色

以下是特定字符串:

<g id="stroke">
<circle cx="6.628mm" cy="23.164mm" r="1.50mm"  fill="#B8BBC0" stroke="#000000" stroke-width="0.282mm"/>
<circle cx="3.920mm" cy="20.170mm" r="1.50mm"  fill="#B8BBC0" stroke="#000000" stroke-width="0.282mm"/>
</g>
<g id="fill" style="visibility: hidden;">
<circle cx="22.593mm" cy="31.429mm" r="1.50mm"  fill="#B8BBC0" stroke="#000000" stroke-width="0.282mm" data-isfill="yes"/>
<circle cx="22.593mm" cy="27.381mm" r="1.50mm"  fill="#B8BBC0" stroke="#000000" stroke-width="0.282mm" data-isfill="yes"/>
</g>

因此,在我看来:

Change fill="#B8BBC0" to fill="#000000" IF inside <g id="stroke">
Change fill="#B8BBC0" to fill="#FFFFFF" IF inside <g id="fill">
将fill=“#B8BBC0”更改为fill=“#000000”,如果在内部
将fill=“#B8BBC0”更改为fill=“#FFFFFF”,如果在内部

我不确定最好的方法是什么。我知道replace()的基本知识,但我不知道如何编写代码来替换具有特定id的两个标记之间的内容。有人能帮我编写吗?

以下是使用
DOMDocument
的示例:

$data = <<<DATA
<?xml version="1.0"?>
<root>
<g id="stroke">
<circle cx="6.628mm" cy="23.164mm" r="1.50mm"  fill="#B8BBC0" stroke="#000000" stroke-width="0.282mm"/>
<circle cx="3.920mm" cy="20.170mm" r="1.50mm"  fill="#B8BBC0" stroke="#000000" stroke-width="0.282mm"/>
</g>
<g id="fill" style="visibility: hidden;">
<circle cx="22.593mm" cy="31.429mm" r="1.50mm"  fill="#B8BBC0" stroke="#000000" stroke-width="0.282mm" data-isfill="yes"/>
<circle cx="22.593mm" cy="27.381mm" r="1.50mm"  fill="#B8BBC0" stroke="#000000" stroke-width="0.282mm" data-isfill="yes"/>
</g>
</root>
DATA;

$dom = new DOMDocument;
$dom->loadXML($data);
$xpath = new DOMXPath($dom);

$gstrokes = $xpath->query('//g[@id="stroke"]/circle[@fill]'); // Get CIRCLEs (with fill attribute) inside G with ID "stroke"
foreach($gstrokes as $c) {                  // Loop through all CIRCLEs found
   $c->setAttribute('fill', '#000000');     // Set fill="#000000"
}
$gstrokes = $xpath->query('//g[@id="fill"]/circle[@fill]'); // Get CIRCLEs (with fill attribute) inside G with ID "fill"
foreach($gstrokes as $c) {                  // Loop through all CIRCLEs found
   $c->setAttribute('fill', '#FFFFFF');     // Set fill="#000000"
}

echo $dom->saveXML();                       // Save XML

$data=下面是一个使用
DOMDocument
的示例:

$data = <<<DATA
<?xml version="1.0"?>
<root>
<g id="stroke">
<circle cx="6.628mm" cy="23.164mm" r="1.50mm"  fill="#B8BBC0" stroke="#000000" stroke-width="0.282mm"/>
<circle cx="3.920mm" cy="20.170mm" r="1.50mm"  fill="#B8BBC0" stroke="#000000" stroke-width="0.282mm"/>
</g>
<g id="fill" style="visibility: hidden;">
<circle cx="22.593mm" cy="31.429mm" r="1.50mm"  fill="#B8BBC0" stroke="#000000" stroke-width="0.282mm" data-isfill="yes"/>
<circle cx="22.593mm" cy="27.381mm" r="1.50mm"  fill="#B8BBC0" stroke="#000000" stroke-width="0.282mm" data-isfill="yes"/>
</g>
</root>
DATA;

$dom = new DOMDocument;
$dom->loadXML($data);
$xpath = new DOMXPath($dom);

$gstrokes = $xpath->query('//g[@id="stroke"]/circle[@fill]'); // Get CIRCLEs (with fill attribute) inside G with ID "stroke"
foreach($gstrokes as $c) {                  // Loop through all CIRCLEs found
   $c->setAttribute('fill', '#000000');     // Set fill="#000000"
}
$gstrokes = $xpath->query('//g[@id="fill"]/circle[@fill]'); // Get CIRCLEs (with fill attribute) inside G with ID "fill"
foreach($gstrokes as $c) {                  // Loop through all CIRCLEs found
   $c->setAttribute('fill', '#FFFFFF');     // Set fill="#000000"
}

echo $dom->saveXML();                       // Save XML

$data=你想从我们这里得到什么?请查看编辑-理想情况下我需要帮助编写脚本。到目前为止,只需将#B8BBC0替换为#000000即可,但我不知道要使用哪些函数在“”标记之间进行更改。你可以使用PHP的DOM类/函数来执行此操作。因此,我可以使用类似setAttribute的('fill','000000'))但是如何设置特定“”中的属性?您想从我们这里得到什么?请参阅编辑-理想情况下,我需要编写脚本的帮助。到目前为止,只需将#B8BBC0替换为#000000即可,但我不知道使用哪些函数在“”标记之间进行更改。您可以使用PHP的DOM类/函数来完成此操作。因此,我可以使用一些东西类似于setAttribute('fill','#000000'),但如何设置特定“”中的属性?