如何替换文本文件中字符串的前半部分

时间:2019-06-17 17:27:44

标签: php file str-replace

我有一个文本文件,该文件包含数据,并用逗号分隔。此文本文件的示例类似于User,data,date,其值是输入数据时的日期值。如果我想删除这行数据,是否可以只做str_replace的{​​{1}}然后将其替换为什么。对于User,data的工作方式,我想说的不是很确切,而是替换某些行。

我问的例子。

文本文件:str_replace

代码:

Austin,12,1:23:08pm

因此,我没有获取行中的所有数据,而是排除了它的最后一行。 如果需要更多说明,我将编辑帖子。谢谢!

2 个答案:

答案 0 :(得分:0)

假设您创建一个名为“ file”的文本文件,然后在其上有一个文本“ Austin,12,1:23:08pm”。以下代码将为您工作。

//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);

答案 1 :(得分:0)

使用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);
}