我正在使用PHP 5.3从Web服务调用接收数据集,该调用返回一个或多个事务的信息.每个事务的返回值由管道(|)分隔,事务的开始/结束由空格分隔.
2109695|49658|25446|4|NSF|2010-11-24 13:34:00Z 2110314|45276|26311|4|NSF|2010-11-24 13:34:00Z 2110311|52117|26308|4|NSF|2010-11-24 13:34:00Z (etc)
由于日期时间戳中的空格,对空间进行简单拆分不起作用.我知道正则表达式很好,知道总有不同的方法来打破这个,所以我想得到一些专家的意见将帮助我提出最密不透的正则表达式.
解决方法:
如果每个时间戳最后都有一个Z,你可以使用正向后向断言来分割空间,只有当它前面有一个Z时:
$transaction = preg_split('/(?<=Z) /',$input);
获得交易后,您可以将它们拆分为|获得个别零件.
请注意,如果您的数据的Z后跟一个除时间戳之外的其他位置的空格,则上述逻辑将失败.为了克服这个问题,只有在时间戳模式之前才能分割空间:
$transaction = preg_split('/(?<=\d\d:\d\d:\d\dZ) /',$input);