加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 关于如何解析这个数据集的任何优雅想法?

发布时间:2020-12-13 21:39:20 所属栏目:PHP教程 来源:网络整理
导读:我正在使用 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|2
我正在使用 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);

获得交易后,您可以将它们拆分为|获得个别零件.

Codepad link

请注意,如果您的数据的Z后跟一个除时间戳之外的其他位置的空格,则上述逻辑将失败.为了克服这个问题,只有在时间戳模式之前才能分割空间:

$transaction = preg_split('/(?<=dd:dd:ddZ) /',$input);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读