The following PHP code works to read one file and write the same content into another file:
<?php
$input = @fopen("./temp.def", "r");
$output = @fopen("./temp.tpc","w");
if ($input) {
while (!feof($input)) {
$buffer = fgets($input);
fputs($output, $buffer);
}
if (!feof($input)) {
echo "Error: unexpected fgets() fail
";
}
fclose($input);
fclose($output);
}
But when I add code to replace some content based off of whether or not a substring is some specific text it doesn’t work. Here’s the code for that:
<?php
$input = @fopen("./temp.def", "r");
$output = @fopen("./temp.tpc","w");
if ($input) {
while (!feof($input)) {
$buffer = fgets($input);
//check to see if it is a `row` line
$isrow = mb_substr($buffer, 0, 5, 'UTF-8');
if ($isrow == "row=:") {
$data = str_ireplace("row=:", "base=:[loc^nb]" . chr(10) . "row=:", $buffer);
else {
$data = $buffer;
}
}
fputs($output, $data);
}
if (!feof($input)) {
echo "Error: unexpected fgets() fail
";
}
fclose($input);
fclose($output);
}
The only thing changed in the code is the added part, highlighted in yellow, and the variable name change, highlighted in blue...
You have some weird bracing going on there. Try:
if ($isrow == "row=:") {
$data = str_ireplace("row=:", "base=:[loc^nb]" . chr(10) . "row=:", $buffer);
} else {
$data = $buffer;
}