瑞客论坛

 找回密码
 立即注册
查看: 1411|回复: 1

PHP面试题(关于正则表达式)

  [复制链接]

金币1452  第1177名

2

主题

1094

回帖

8767

积分

论坛元老

Rank: 8Rank: 8

威望
3502
贡献
3812
热心值
1
金币
1452
注册时间
2019-7-10
发表于 2019-10-17 09:14 | 显示全部楼层 |阅读模式
用PHP编写一个简单类,把下面一段字符串处理成一个数组。在” P*>”与”GS*”之间会出现一个符号(本样式字符串是”~”),此符号将作为整篇的”行”分割符,但此符号并非固定每次都是”~”的,肯定的是这个位置上是一个非字符符号, 另外”P*>”这些字母也不是固定存在的;
本次要求,首先要确认是否同时存在”ISA*””GS*””ST*”这样的字段内容(使用正则表达式的方法),然后再使用正则表达式匹配找到刚刚提到的分割符号(不能直接使用explode这样的硬分割,要求使用正则表达式);
完成行分割后,再以每行的头部字母组合作为数组行的键(Key Name),
如” SAC*A*E210***3409*3*3.5”则”SAC”作为Key Name,(同名Key Name合并成包含多行的子数组);同时配置一个”Search”函数,不用太复杂,只要能基于Key Name搜出目标“行”即可,例如Search(“SAC”)则返回所有”SAC”的行,又如Search(“SAC”,”A”)则返回”SAC*A*…”的行。

ISA*00*          *00*          *14*072271711CAP   *12*862151386060   *190828*2019*^*00406*000513837*0*P*>~GS*PO*072271711C*862151386060*20190828*2019*503628*X*004060~ST*850*3629~BEG*00*NE*36669591**20190828*36669591850~CUR*BY*CAD*1.000~REF*4C*X-DOCK~SAC*A*E210***3409*3*3.5*****02~SAC*A*D240***8766*3*9*****02~DTM*002*20190910~DTM*061*20190924~DTM*038*20190904


回复

使用道具 举报

金币1452  第1177名

2

主题

1094

回帖

8767

积分

论坛元老

Rank: 8Rank: 8

威望
3502
贡献
3812
热心值
1
金币
1452
注册时间
2019-7-10
 楼主| 发表于 2019-10-17 17:19 | 显示全部楼层
??????????????
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|瑞客论坛 |网站地图

GMT+8, 2024-11-23 13:08

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表