我有一个包含此数据的文本文件:
keyword 1
keyword 2
keyword 3
keyword 4
keyword 4
但是,我需要删除txt文件中包含'keyword 1, keyword 2..'
的所有行,并保留特定的数据行。
知道如何打开和写入文件以及关闭文件,但我不知道如何使用php删除行/内容。如何使用php从文件中删除不需要的行?
答案 0 :(得分:0)
下面这个脚本应该有帮助
$root = realpath($_SERVER["DOCUMENT_ROOT"]);
干杯
答案 1 :(得分:0)
如果您需要删除确切的行,and your file use your system-native newlines:
$blacklist = array (
'keyword 1',
'keyword 2'
);
file_put_contents ( 'file.txt', implode ( PHP_EOL, array_diff ( file ( 'file.txt', FILE_IGNORE_NEW_LINES ), $blacklist ) ) );
但如果您,正如您所说,需要找到包含而不是精确行的行,或者您的文本文件不使用系统原生换行符,则会变得更复杂:
$blacklist = array (
'keyword 1',
'keyword 2'
);
$lines = file ( 'file.txt' );
foreach ( $lines as $key => $line ) {
foreach ( $blacklist as $black ) {
if (false !== strpos ( $line, $black )) {
unset ( $lines [$key] );
break;
}
}
}
file_put_contents ( 'file.txt', $lines );
答案 2 :(得分:-1)
您可以使用php函数file(...)
来读取文件(所有行都作为数组)。并使用in_array
来确定给定的行是否匹配您的关键字之一(我假设整行必须匹配关键字)。函数trim()
用于从输入行中删除'\ n'。
$linesToRemove = array('keyword 1', 'keyword 2', 'keyword 3');
$lines = file('file.txt');
foreach($lines as $key => $line)
{
if (in_array(trim($line), $linesToRemove))
unset($lines[$key]);
}
file_put_contents('file2.txt', implode("", $lines));