在PHP中,如何编辑文本文件并保存它以便删除第一个空格后的所有内容?
换句话说,每条线只有第一个字?
例如,如果文本文件如下所示:
Adi NNP
Adia NNP
Adios NNP FW
Adios-Direct NNP
Adios-On NNP
Adios-Rena NNP
Adios-Trustful NNP
Adirondack NNP
Adirondacks NNPS
Adjoining VBG
Adjournment NN
执行脚本后,文本文件如下所示:
Adi
Adia
Adios
Adios-Direct
Adios-On
Adios-Rena
Adios-Trustful
Adirondack
Adirondacks
Adjoining
Adjournment
我将如何处理这个问题,就是打开文件,读取文件,然后取出每一行并将其存储在一个数组中。然后在没有任何东西的情最后,将已编辑的数组保存到新文件中。
有没有更好的方法呢?
除了最后两个任务之外,我所知道的上述方法中的所有操作都是如此。我会这样做:
$file = array();
$lines = file('file.txt');
foreach($lines as $line){
array_push($file, $line);
}
// now travel through $file and replace everything after first space with nothing
// travel though $file again, but write each element as a new line in a .txt file
答案 0 :(得分:1)
您可以使用explode()
按行分隔行。然后你可以立即将字符串写回文件,不需要第二个循环:
$file = array();
$lines = file('file.txt');
$new_file = fopen('new.txt', 'w+');
foreach($lines as $line){
$bits = explode(' ', $line);
fwrite($new_file, $bits[0] . PHP_EOL);
}
fclose($new_file);
答案 1 :(得分:1)
您可以在同一行中执行此操作:只需将array_push($file, $line)
替换为...
$file[] = strtok($line, ' ');
在array_map
:
$lines = array_map(function($line) {
return strtok($line, ' ');
}, file('file.txt'));
...或者您可以立即将其写回,如@ hek2mgl answer。
所示答案 2 :(得分:0)
您可以完全绕过数组,并使用简单的regular expression执行此操作:
// Read in contents into a variable
$data = file_get_contents('input.txt');
// Drop the space and everything after on each line
$data = preg_replace('/ .*$/m', '', $data);
// Dump contents to file (change this to input.txt if you want to overwrite the file)
file_put_contents('output.txt', $data);