Как найти и заменить в текущей строке (исходя из fgets ())? Php - PullRequest
0 голосов
/ 20 октября 2019

Я пытаюсь изменить файл .js с помощью PHP. Я могу получить содержимое файла построчно, используя fgets(), но не могу заменить строку, которая в настоящее время идет от fgets().

Я пытался использовать fputs($handle, $read_line), но этодает странные результаты.

Данные файла

Новая строка данных 1

Новая строка данных aaa 2

Новая строка данных 3

Ниже приведен мой код PHP для замены «aaa» на «abc».

$file_path = $dir.'test\folder\folder2\file.js';

if($handle = fopen($file_path, 'r+')) {

    while(!feof($handle)) {
        $read_line = fgets($handle);
        if(strpos($read_line, 'aaa')){
            $read_line = str_replace("aaa","abc",$read_line);
        }
        fputs($handle, $read_line);
    }
    fclose($handle);
}

Ожидаемый результат должен быть

Новая строка данных 1

Новая строка данных abc 2

Новая строка данных 3

Но вывод

Новая строка данных 1

Новая строка данных 1

a

а

1 Ответ

0 голосов
/ 20 октября 2019

Помните, что strpos вернет 0, если строка поиска найдена по первому символу. Поэтому используйте оператор !==, чтобы различить ошибку strpos и совпадение с нулевым символом.

if(false !== strpos($read_line, 'aaa')){
     $read_line = str_replace("aaa","abc",$read_line);
}
...