令人氣惱的 preg match bug

2021-06-06 14:43:34 字數 419 閱讀 2650

乙個 157k 大小的txt檔案,用 preg_match 匹配其中的一些內容,結果死活匹配不出內容來,檢查來檢查去,沒有發現什麼問題,為了檢驗是否跟平台有關係,在 windows 下php 5.2.11 和linux 空間的 5.2.17 都試了,還是不行。

還是懷疑匹配規則問題,最後建化成  preg_match_all("{}is", $txt, $res)。 能提取到乙個 之間的內容, 令乙個提不出來,對比了一下, 第乙個匹配的內容長度較小,幾百位元組;第二個要匹配的內容比較大,有 140k 多位元組。

懷疑,肯定,以及非常肯定,preg_match 函式在分配陣列大小的時候做了限定,超過一定大小就忽略, 或者他根本就是有bug,超過一定長度就出現錯誤了。

折騰浪費了很多時間,沒力氣研究php原始碼驗證是否這個原因了,用 strpos+substr 解決了