Мне нужно найти строку в файле .cfg и удалить всю строку. Я использую file_get_contents
чтобы получить данные в файле .cfg, и я храню их в переменной, поиск — это хорошо, но вы не знаете, как удалить всю строку?
У меня есть строка следующим образом:
пользователь $username
небезопасный-пароль $password
Я хочу искать $username
и удалите всю строку.
Используйте небольшое регулярное выражение, чтобы соответствовать строке:
<?php
$file = 'blah
etc
user delboy1978uk insecure-password 123456
etc
etc';
$regex = '#\nuser\s\w+\sinsecure-password\s.+\n#';
preg_match($regex, $file, $matches);
$file = str_replace($matches[0], "\n", $file);
echo $file;
Какие выводы:
blah
etc
etc
etc
Смотрите это здесь: https://3v4l.org/BcDWK
С помощью этого метода вы можете прочитать каждую строку конфигурационного файла путем поиска строки в каждой строке.
$h = fopen('yourfile', 'r') ;
$match = 'username' ;
$output = [] ;
if ($h) {
while (!feof($h)) {
$line = fgets($h);
//your current search function, which search each line
if ( your_search_function($line, $match) === false) {
//array $output will not contain matching lines.
$output[] = $line;
}
}
fclose($h);
//write back to file or do something else with $output
$hw = fopen('yourfile', 'w') ;
if( $hw ) {
foreach( $output as $line ) {
fputs($hw, $line) ;
}
fclose($hw) ;
}
}