string replace in a large file with php

php, readfile, replace, string

Solution

If you aren't required to use PHP, I would highly recommend performing stuff like this from the command line. It's by far the best tool for the job, and much easier to use.

In any case, the `sed` (Stream Editor) command is what you are looking for:

sed s/search/replace oldfilename > newfilename

If you need case-insensitivity:

sed s/search/replace/i oldfilename > newfilename

If you need this to perform dynamically within PHP, you can use `passthru()`:

$output = passthru("sed s/$search/$replace $oldfilename > $newfilename");

Problem

I am trying to do a string replace for entire file in PHP. My file is over 100MB so I have to go line by line and can not use `file_get_contents()`. Is there a good solution to this?

Original source