Php 删除/替换文本文件中的数据

Php 删除/替换文本文件中的数据,php,Php,我想在文本数据和变量数据之间设置条件,然后删除该行 例子 我有一个包含用户名的txt数据,比如(一二一三一)行中的每个用户, 我想删除除“一个”用户名以外的所有数据 我的代码; 该函数用于删除行 我的问题是,如果使用data+$getLinenumber,我只想删除除包含一个单词的行之外的所有行。请注意,您不应该在if语句中定义函数 另外,除非我有误解,否则你甚至不需要行号 function remove_line( $data, $remove ){ $lines = expl

我想在文本数据和变量数据之间设置条件,然后删除该行

例子 我有一个包含用户名的txt数据,比如(一二一三一)行中的每个用户, 我想删除除“一个”用户名以外的所有数据

我的代码; 该函数用于删除行


我的问题是,如果使用
data+$getLine
number,我只想删除除包含一个单词的行之外的所有行。

请注意,您不应该在if语句中定义函数

另外,除非我有误解,否则你甚至不需要行号

function remove_line( $data, $remove ){
    $lines     = explode( PHP_EOL, $data ); // Convert to Array
    $new_lines = ''; // Start a new variable we'll add to in a loop

    foreach( $lines as $line ){
        $line = trim( $line ); // Trim Whitespace

        if( $line != $remove ){
            // Line isn't a line we want removed, so save it plus an EOL
            $new_lines .= $line.PHP_EOL;
        }
    }

    return $new_lines;
}
现在,如果您像这样加载一个文件:
$file=file\u get\u contents('my file.txt')包含以下内容:

One
Two
One
Three
One
一旦您通过
remove\u line
函数运行它,您将得到如下结果:

$file     = file_get_contents( 'my-file.txt' );
$new_file = remove_line( $file, 'One' );

var_dump( $new_file ); // Returns: string(10) "Two Three "

只需使用正则表达式即可:

$file = preg_grep('#one#', file('file.txt'));
这将使
$file
成为仅包含包含字符串“one”的行的数组。要将数组转换回字符串,只需对其进行内爆

如果您只想回显包含“一”的行,还可以使用:

这将逐行遍历文件,并回显其中包含字符串1的任何行。好处是它不使用两个数组作为中间结构

$file = preg_grep('#one#', file('file.txt'));
$file = new RegexIterator(new SplFileObject("file.txt"), '#one#');
foreach ($file as $content) {
    echo $content, PHP_EOL;
}