PHP面试题(关于正则表达式)
用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
??????????????
页:
[1]