似乎PHP的preg_match
在某些情況下對匹配重複字符的限制爲3276個字符。PHP preg_match長度3276限制
即
^(.|\s){0,3276}$
作品,但^(.|\s){0,3277}$
沒有。
它似乎並不總是適用,因爲/^(.){0,3277}$/
的作品。
我無法在PHP的文檔或錯誤跟蹤器中的任何地方找到這個。數字3276似乎有點奇怪的邊界,我唯一能想到的是它大約是32767的1/10,這是一個有符號的16位整數的限制。
preg_last_error()
返回0
我已經重現了http://www.phpliveregex.com/問題,以及我的本地系統和網絡服務器。
編輯:看起來像我們正在得到「警告:preg_match():編譯失敗:正常表達式在偏移16」太大的代碼,所以它似乎是與PHP preg_match_all limit相同的問題。
然而,正則表達式本身並不是很大......當PHP有重複的組使它變得太大時,PHP會做某種擴展嗎?
它更可能是一個內存邊界,preg_match將返回一個數組與許多元素,所以你需要有足夠的內存,以允許一個大型數組,嘗試提高你的最大內存限制,並看到如果它改變。 –
您是否檢查過'preg_last_error()'? –
是你的錯誤報告嗎?如果使用太多內存,應該會出現某種錯誤 – x4rf41