通过PHP preg_replace更改导入的XML文件中的节点大小写

时间:2009-08-01 21:34:29

标签: php xml

我正在尝试处理导入的XML文件并在其中一个节点中生成文本

<Name>SOMETHINGTOMAKELOWERCASE</Name>

小写

<Name>somethingtomakelowercase</Name>

到目前为止,我得到了:

$xml = file_get_contents($xmlfile);
$xml = preg_replace('/<Name>(.*)<\/Name>/e', '<Name>' . strtolower($1) . '</Name>',$xml); 
fwrite(fopen($xmlfile, 'wb'), $xml);

我已经尝试了十个不同版本的正则表达式,但它们都不会起作用。你能指出正确的正则表达方向吗?

1 个答案:

答案 0 :(得分:2)

请改为尝试:

$xml = file_get_contents($xmlfile);
$xml = preg_replace('/<Name>(.*)<\/Name>/e', "'<Name>' . strtolower('\\1') . '</Name>'",$xml); 
fwrite(fopen($xmlfile, 'wb'), $xml);

在preg_replace中使用/ e修饰符时,必须传递一串代码作为替换参数进行评估,而不是已经计算过的表达式。