我正在處理幾GB的文本,並且我的腳本死於preg_replace()。經過一些研究後,我提取出現問題的部分文本。PHP:preg_replace吃掉所有內存
preg_replace('/\b\p{L}{0,2}\b/u', '', "\x65\xe2\xba\xb7\x69\xe3\xb1\xae");
PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 251105872 bytes)
我想刪除短(最多2個字符)的話。此外,我發現,如果我將正則表達式更改爲:
preg_replace('/\b\p{L}{1,2}\b/u', '', "\x65\xe2\xba\xb7\x69\xe3\xb1\xae");
它工作正常。
有人可以解釋發生了什麼事嗎?第一個例子適用於99%的文本。
你是否將整個「情侶文本」同時傳遞給函數?這意味着你首先將整個文件讀入內存? – jedwards
^^分塊處理 – 2013-09-23 04:43:39
沒有。我得到了文本文件,每個文件大約100 kb – 2ge