比如源文件内容:
111::aaa
222::bbb
333::ccc通过php修改后变成
111::aaa
222::mymymy
333::ccc只改写第二行::后面部分的内容。代码应该怎样写?
谢谢。

解决方案 »

  1.   


    $arr=file("test.txt");
    $a=222;
    $value="mymymy";
    foreach ($arr as $k=>$v)
    {
    if(preg_match("/$a::([^\b]+)/",trim($v),$match))
    {
    if(trim($value)==trim($match[1]))exit;
    $string=$a."::".$value."\n";
    $arr[$k]=$string;
    }
    }
    print_r($arr);
    if(file_put_contents("test.txt", $arr))echo "ok";
    //大量文件就不知道效率怎么样
      

  2.   

    $arr=file("test.txt");
    $a=222;
    $value="mymymy";
    foreach ($arr as $k=>$v)
    {
    $n=explode("::", $v);
    $new[$n[0]]=trim($n[1]);
    if($n[0]==$a)
    {
    $arr[$k]=$a."::".$value."\n";
    }
    }
    print_r($arr);
    if(file_put_contents("test.txt", $arr))echo "ok";
    //这样也可以
      

  3.   


    $arr=file("test.txt");
    $a=222;
    $value="mymymy";
    foreach ($arr as $k=>$v)
    {
        $n=explode("::", $v);
        if($n[0]==$a)
        {
            if(trim($value)==trim($n[1]))exit;
            $arr[$k]=$a."::".$value."\n";
        }
    }
    print_r($arr);
    if(file_put_contents("test.txt", $arr))echo "ok";
    //这样也可以
      

  4.   

    1楼正解~~
    lz需要弄清楚~你到底是根据什么替换bbb为mymymy按行数 还是 按照前面有个222字符!