Как заменить первую половину строки в текстовом файле - PullRequest
0 голосов
/ 17 июня 2019

У меня есть текстовый файл с данными, разделенный запятыми. Пример этого текстового файла похож на User,data,date значение даты устанавливается, когда данные были введены. Если бы я хотел удалить эту строку данных, можно ли сделать str_replace равным User,data, а затем заменить его ничем. Я не слишком знаком с тем, как работает str_replace, когда речь идет о замене определенных строк, кроме точных значений.

пример того, что я спрашиваю.

Текстовый файл: Austin,12,1:23:08pm

Код:

$content = file_get_contents('');
str_replace("Austin,12","",$content);
file_put_contents('');

Таким образом, вместо того, чтобы получать все данные в строке, я исключаю последнюю строку. Если понадобится больше объяснений, я буду редактировать пост. Спасибо!

Ответы [ 2 ]

0 голосов
/ 17 июня 2019

Используя fgetcsv() и предполагая, что такой входной файл

tst.dat (CSV-файл)

Austin,12,1:23:08pm
Smith,13,2:23:08pm
Jones,14,3:23:08pm

И такой код

<?php
if (($input = fopen("tst.dat", "r")) !== FALSE) {
    if (($output = fopen("new.dat", "w")) !== FALSE) {
        while (($line = fgetcsv($input, 1000, ",")) !== FALSE) {
            //echo $line[0] . ', ' . $line[1] . ', ' . $line[2] . PHP_EOL;
            fwrite($output, $line[2] . PHP_EOL);
        }
        fclose($output);
    }
    fclose($input);
}

Вы получите выходной файл с именем new.dat, подобный этому

1:23:08pm
2:23:08pm
3:23:08pm

И произвести только определенную строку в файле

<?php
if (($input = fopen("tst.dat", "r")) !== FALSE) {
    if (($output = fopen("new.dat", "w")) !== FALSE) {
        while (($line = fgetcsv($input, 1000, ",")) !== FALSE) {
            if ($line[0] == 'Austin'){
                // write only the last bit
                fwrite($output, $line[2] . PHP_EOL);
            } else {
                // by default write the complete line
                fputcsv($output, $line);
            }
        }
        fclose($output);
    }
    fclose($input);
}
0 голосов
/ 17 июня 2019

Я предполагаю, что вы создали текстовый файл с именем «file», а затем на нем есть текст «Austin, 12,1: 23: 20pm».Следующий код должен работать для вас.

//read the text file
$textfile_data='';
$textfile_name='file.txt';
$fh = fopen("$textfile_name",'r');
while ($line = fgets($fh)) {
  //append the text file content into textfile_data variable
  $textfile_data.= $line;
}
fclose($fh);

//now textfile_data variable has the text file text
$text_to_replace='Austin,12';
//replace the text you want
$new_textfile_data=str_replace("$text_to_replace",'',$textfile_data);


//write the text file
$fp = fopen("$textfile_name", 'w');
if(fwrite($fp, "$new_textfile_data")){
    echo 'Replaced successfully';
}
fclose($fp);
...