我正在尝试获取文件内容,使用正则表达式和preg_replace替换它的某些部分并将其保存到另一个文件中:
$content = file_get_contents('file.txt', true);
$content_replaced = preg_replace('/\[\/m\]{1}\s+(\{\{.*\}\})\s+[\x{4e00}-\x{9fa5}]+/u', 'replaced text', $contents);
if ($content_replaced) {
file_put_contents('file_new.txt', $content_replaced);
echo "Successful!";
}
else {
echo "Some error ocurred";
}
这段代码适用于小文件,但是当我尝试原始文件(大约60Mb)时,它只是给我一条消息“发生了一些错误”。
非常感谢任何建议。
更新。日志中没有错误,内存限制设置为1024M
答案 0 :(得分:4)
file_put_contents
我遇到了最大/限制问题。
不知道限制可能是什么,但使用fwrite
解决了我的麻烦,我放下瓶子。
答案 1 :(得分:2)
你的内存可能已经不足了。 memory_limit设置为什么? (phpinfo()会告诉你)。您可以增加内存限制,如:
ini_set('memory_limit','128M');
答案 2 :(得分:2)
我很确定你正在达到一些正则表达式限制。哎呀,前段时间我达到了极限with 1000 chars ...有60Mb的输入我敢打赌,你可能会在真正简单的模式下到处达到正则极限。我会尝试至少尽可能地简化它,如果可能的话,不要使用.*?
而不是.*
。
要获取更多信息,只需检查preg_last_error()
的返回值。