php从xml中删除额外的括号

时间:2013-09-25 22:32:47

标签: php xml simplexml

我需要解析一大堆xml的相册。我正在使用PHP SimpleXML进行解析,但是在某些错误条目上失败,因为在某些情况下可能会出现额外的括号,请参阅“description”或“CameraModel”标记。

如何在使用SimpleXML加载xml之前清理它?如果可能,请使用“_”下划线替换额外的括号。

这是我的xml:

<values>
<photos>
<photo><photoID>4521</photoID>
<name></name>
<description>Seattle<3</description>
<fileName>S5001497.jpg</fileName>
<fileSize>177513</fileSize>
<fileSizeOriginal>2359669</fileSizeOriginal>
<width>1200</width>
<height>900</height>
<exif><CameraModel><Digimax S500 / Kenox S500</CameraModel>
<CameraMake>Samsung Techwin</CameraMake>
<DateTime>2008-07-12 17:37:24</DateTime>
<Version>220</Version>
<SourceWidth>2592</SourceWidth>
<SourceHeight>1944</SourceHeight>
<Orientation>1</Orientation>
<FlashUsed>89</FlashUsed>
<FocalLength>5.8</FocalLength>
<ExposureTime>0.033333</ExposureTime>
<Brightness></Brightness>
<ApertureFNumber>2.8</ApertureFNumber>
<ISO>177</ISO>
<ExposureProgram>0</ExposureProgram>
</exif>
<type>photo</type>
<GPS></GPS>
</photo>
</photos>
</values>

1 个答案:

答案 0 :(得分:1)

使用正则表达式

print preg_replace("/(<([\w]+)[^>]*>.*)(<)(.*<\/\\2>)/", "$1_$4", $xml);