一个 157k 大小的txt文件,用 preg_match 匹配其中的一些内容,结果死活匹配不出内容来,检查来检查去,没有发现什么问题,为了检验是否跟平台有关系,在 windows 下php 5.2.11 和linux 空间的 5.2.17 都试了,还是不行。
还是怀疑匹配规则问题,最后建化成 preg_match_all("{<ul>(.*?)</ul>}is", $txt, $res)。 能提取到一个 <ul> </ul> 之间的内容, 令一个提不出来,对比了一下, 第一个匹配的内容长度较小,几百字节;第二个要匹配的内容比较大,有 140k 多字节。
怀疑,肯定,以及非常肯定,preg_match 函数在分配数组大小的时候做了限定,超过一定大小就忽略, 或者他根本就是有bug,超过一定长度就出现错误了。