三千二百四十一个对账单文件,跑下来一个没错。这事我得说清楚,不是我写的那版,是我让它写的那版。
行吧,从头说。
渠道那边上个月底改了回单的命名规则,没人通知我们。十月十九号周一早上,跑批照旧去扫目录,扫出来零条。财务的小姑娘在群里问了一句,我还没当回事,以为是那台机器的盘没挂上。上去一看,文件都在,三千多个躺那儿,名字全变了。
老规则是商户号_日期.csv 这种,我用 substr 切的,切了六七年没出过事。新名字我贴一个出来也不合适,反正就是中间多塞了一段渠道自己的流水号,长度还不定,有的八位有的十一位。前面商户号的长度倒是没变,后面日期那段从 20261019 改成 2026-10-19,还带着连字符。最操蛋的是有一批老文件没改,混在同一个目录里。
我周一下午写正则,写到四点半。第一版把商户号切掉了一位,因为我按定长写的,没想到还有十二位开头的商户号。第二版改了,结果漏了老格式那批,跑到第三十个文件就抛异常了。
话说回来,正则这东西,我一直觉得自己写的还行。当年写采集器的时候——算了,说了你们也没赶上。
周二又折腾一上午,越写越烦。财务催了两回,语气还算客气。但客气这个事,比骂人难受。中午吃饭我琢磨,实在不行就按后缀分类写两个分支,丑点就丑点。可我心里清楚,这口子一开,以后渠道再改一次规则,我还得再来一遍。
下午两点多,我把财务在群里说的那段原话,加上我自己总结的三种格式,一起丢进去了。那个什么 Cloud Code,我一直记不住它到底叫云还是叫个爪子,反正就那个。
它给的东西不多,一条表达式,加三行说明。说明里有一句话我看了两遍:它问我后缀是不是只有一种。我第一反应是这不废话,转念一想我他妈还真没确认过。翻了一下文件列表,渠道有两种后缀,.csv 和 .CSV,大写的那批是八月份之前的。
这个事我自己迟早会发现,但那天不会。那天下午我要么漏掉两百多个大写后缀的文件,要么等财务对完账来找我第二回。
表达式拿过来改了两处,跑了一遍,三千二百四十一个文件全过,商户号、日期、流水号都取对了。其中有个老文件商户号前面带了个空格,它也给处理了。这个不是我加的,它给的表达式里带了 trim,我当时还嫌多余。
就这样。
要我说,正则这玩意本来就是查文档的活,谁写都得翻两遍手册,它就是背下来的东西比我多。工具而已,也就那样吧。
不过那张表我留着了,放在脚本头部当注释。以后渠道再改,我照着改就行。
话说回来,PHP 的 preg_match 也挺好使的,谁再说 PHP 死了。