使用PHP替换文本文件中的行

时间:2013-09-24 20:53:43

标签: php regex replace

我有一个包含以下数据的文本文件:

1_fjd
2_skd
3_fks

我想用php替换文本文件中的一个部分。例如,我想这样做:

找到以“2_”开头的行,并将其替换为“2_word”,以便将“2_”后的所有内容替换为:“word”。我怎么能在PHP中做到这一点?

3 个答案:

答案 0 :(得分:10)

你不需要正则表达式。请尝试以下方法:

  • 使用file()将文件加载到数组中并循环使用
  • 检查字符串是否以2_
  • 开头
  • 如果是,请将其替换为输入$word并将其连接到$result字符串
  • 如果不是,只需将其连接到$result字符串
  • 即可
  • 使用file_get_contents()并将结果写入文件

代码:

$lines = file('file.txt');
$word = 'word';
$result = '';

foreach($lines as $line) {
    if(substr($line, 0, 2) == '2_') {
        $result .= '2_'.$word."\n";
    } else {
        $result .= $line;
    }
}

file_put_contents('file.txt', $result);

现在,如果发生了替换,那么file.txt将包含类似的内容:

1_fjd
2_word
3_fks

答案 1 :(得分:1)

文件:

1_fjd
2_skd
1_fff

通话:

replaceInFile("1_", "pppppppppp", "test.txt");

输出:

1_pppppppppp
2_skd
1_pppppppppp

功能:

function replaceInFile($what, $with, $file){
    $buffer = "";
    $fp = file($file);
    foreach($fp as $line){
        $buffer .= preg_replace("|".$what."[A-Za-z_.]*|", $what.$with, $line);
    }
    fclose($fp);
    echo $buffer;
    file_put_contents($file, $buffer);
}

PS:只有在$ what之后只有a到Z的字母时才会起作用。如果要支持更多字符,则必须更改preg_replace模式。

答案 2 :(得分:0)

好吧,我刚刚用3行自己制作了这个。我不会发布它因为你不会从中学习。我会告诉你你需要什么。 explode(表示必须更换第1 _之后的所有内容)和str_replace(以替换couse)只需阅读手册,您就能理解它。祝你好运

修改 当然还有:fopen