I am looking to use PHP to open a file (see example below), search it line by line for a string $colour
and replace everything after the =
with $value
.
file.txt before:
red=0 green=23 blue=999 yellow=44
If my $value
is "1"
and my colour is "blue"
, my file should change to:
red=0 green=23 blue=1 yellow=44
My code so far is:
function write($colour, $value) { $file = 'path'; $file_contents = file_get_contents($file); $file_contents = str_replace($colour, $value, $file_contents); file_put_contents($file, $file_contents); }
However this only gets as far as replacing the $colour
with the $value
(not everything after the “=”) see below my output:
red=0 green=23 1=999 yellow=44
How do I do this?
Advertisement
Answer
The problem is that you are just replacing the text of the colour with the value in
$file_contents = str_replace($colour, $value, $file_contents);
this doesn’t replace the full line though.
Using preg_replace()
, you can replace something starting with the colour followed by and =
till the end of line with…
$file_contents = preg_replace("/{$colour}=.*/", "{$colour}={$value}", $file_contents);