我已经将格式良好的xml文档转换为字符串变量。我想使用preg_replace向每个xml标签添加定义的属性。
例如替换:
<tag1> <tag2> some text </tag2> </tag1>
通过:
<tag1 attr="myAttr"> <tag2 attr="myAttr"> some text </tag2> </tag1>
因此,我基本上需要regex表达式来查找任何开始标记并添加我的属性,但是我是一个完整的regex新手。
不要在XML上使用正则表达式。Xml不是常规语言。请改用php的xml扩展名:
$xml = new SimpleXml(file_get_contents($xmlFile)); function process_recursive($xmlNode) { $xmlNode->addAttribute('attr', 'myAttr'); foreach ($xmlNode->children() as $childNode) { process_recursive($childNode); } } process_recursive($xml); echo $xml->asXML();
所有包含正则表达式的答案都将破坏此有效xml,例如:
<?xml version="1.0" encoding='UTF-8'?> <html> <head> <!-- <meta> ... </meta> --> <script>//<![CDATA[ function load() {document.write('<tt>Test</tt>');} //]]></script> <title><![CDATA[Fancy <<SiteName>> [with Breadcrumbs] > in > title]]></title> </head> <body onload="load()"> <input type="submit" value="multiline button text" /> </body> </html>