我有一个文本文件,该文件包含数据,并用逗号分隔。此文本文件的示例类似于User,data,date
,其值是输入数据时的日期值。如果我想删除这行数据,是否可以只做str_replace
的{{1}}然后将其替换为什么。对于User,data
的工作方式,我想说的不是很确切,而是替换某些行。
我问的例子。
文本文件:str_replace
代码:
Austin,12,1:23:08pm
因此,我没有获取行中的所有数据,而是排除了它的最后一行。 如果需要更多说明,我将编辑帖子。谢谢!
答案 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);
}