2

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

1_fjd
2_skd
3_fks

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

找到以 " " 开头的行2_并将其替换为 " 2_word",因此 '2_' 之后的所有内容都将替换为:'word'。我怎样才能在 php 中做到这一点?

4

3 回答 3

11

您不需要正则表达式。尝试以下操作:

  • 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
于 2013-09-24T21:11:02.337 回答
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 模式。

于 2013-09-24T21:17:30.430 回答
0

好的,我自己只用了 3 行代码就完成了这个。我不会发布它,因为你不会从中学习。我会告诉你你需要什么。爆炸(表示_必须替换第一个之后的所有内容)和str_replace(替换 couse) 只需阅读手册,您将能够理解它。祝你好运

编辑: 当然还有:fopen

于 2013-09-24T21:34:15.930 回答