Я пытаюсь получить содержимое файла, заменить некоторые его части с помощью регулярных выражений и 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"; }
этот фрагмент кода отлично работает с небольшими файлами, но когда я пытаюсь создать исходный файл, который составляет около 60 Мб, он просто дает мне сообщение «Некоторая ошибка.
Любые предложения приветствуются.
Обновить. Нет ошибок в журналах, ограничение памяти установлено на 1024 М
Я уверен, что вы нажмете ограничение на регулярное выражение. Черт, некоторое время назад я достиг предела с 1000 символами … с 60 Мб ввода. Ставка на то, что вы, скорее всего, повредите пределы регулярного выражения повсюду и с действительно простыми шаблонами. Я постараюсь, по крайней мере, максимально упростить его, сделав его неровным .*?
вместо .*
если возможно.
Чтобы получить дополнительную информацию, просто проверьте возвращаемое значение preg_last_error()
.
У меня были проблемы с max / limit с file_put_contents
.
Не знаю, какие ограничения могут быть, но использование fwrite
решило мои проблемы, и я положил бутылку.
Вероятно, у вас не хватает памяти. На что установлен memory_limit? (phpinfo () скажет вам). Возможно, вы сможете увеличить предел памяти, например:
ini_set('memory_limit','128M');