PHP REGEX:删除/替换XML属性中的引号

时间:2017-05-11 01:59:13

标签: php regex

请考虑XML文件中的以下行(从第三方来源生成):

<record ObTime="2017-05-10T23:30" data_value="Ocean Park "The Sea WX"  WA US" />

正如您所看到的,属性data_value在值中引用了字符串,这会导致XML验证器傻笑和爆炸。

任何给定的XML文件都可能有数千行。有没有办法将REGEX应用于整个文件?而且,REGEX会用更温和的东西替换报价?

1 个答案:

答案 0 :(得分:1)

使用下面的Regex,您可以单独匹配这些双引号以进行进一步修改:

(?:="|"\s+(?:\w+="|\/>))(*SKIP)(?!)|"

通过使用(*SKIP)(?!),您可以在每次成功比赛后强制引擎跳过交替的第一侧。

Live demo

PHP代码(删除引号):

echo preg_replace('~(?:="|"\s+(?:\w+="|\/>))(*SKIP)(?!)|"~', '', $xml);