获取裁判文书案号问题的解决过程

在获取了裁判文书之后,我要从中获取一些关键的信息存入数据库,以便统计查询。案号当然是关键信息之一。我手头有的裁判文书是带有标签的,于是解决方案有两种:一种是通过dom解析标签获取数据,一种是直接用正则匹配内容。

刚开始的时候,我觉得裁判文书里面的存放案号的标签应该都是一样的,应该会有个id或者class,那么这个问题通过第一种方案:用dom去解析标签获取内容,很简单的就可以解决。但是,没有!啥也没有!而且存放案号的标签还不相同!有span,有div,还有font!作为一个官方的网站做得如此粗糙,简直不敢信!

然后,我就尝试着用第二种方法去解决,一个案件的案号一般都有固定的格式,比如:(2013)民二终字第12号。天真的我以为写个正则表达式就可以了,然后在测试的过程中我发现了,括号有可能是中文括号“(”也可能是英文括号“(",也有可能是没有”号“字,也有可能没有”第“字,于是我的正则表达式就写成了这样: 

   $preg = '/[〔((]\d\s*\d\s*\d\s*\d*\s*[))〕][\s\S]+字\s*[第]?[\s\S]*[号\s]/U';

再去匹配的时候,发现什么都能匹配到,这个方案也就泡汤了。

   这时,经过长时间的各种尝试与思考,还有桂子的帮组,得出一个新的方案:将文书里面的span、font标签替换成div,再用dom去解析div,得到一个数组,再用正则去匹配这个数组中的每个值,这样匹配的成功率就大幅提升,而正则表达式也可以写得十分简单:$preg = '/\d+.*号$/';到最后遇到一个终极问题,匹配之后会出现很多奇怪的空白符,怎么也去不掉。百度了一圈也没找到办法,\s\r\n\t\v之类的试了一个遍也没用,终于扛不住,今天早上的时候去问了涛哥,然后他用了1分钟就解决了,就是把那个空白符复制到代码里面,再用替换函数,我当时是感觉自己蠢蠢哒。。。 晚上回来,经过测试,这个问题终于得到完美解决。

   从周五到现在,3天3夜,问题终得到解决,这时我想起了一句歌词:解决问题的我眼泪掉下来。 

   最后,感谢桂子,感谢涛哥!

   


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值