每行长度不定,故无法使用指针。最笨的方法,用file来遍历循环找。比较好的:用正则将第21和22个“\n”中间的内容予以替换。

解决方案 »

  1.   

    如果文本数据不是很大,要求不是很高,试试我写的这个函数?/************************************
    *  ->$filename 指定文件
    *  ->$rownum   指定行
    *  ->$content  新的内容
    /***************************************/
    function modifyRow($filename,$rownum,$content="")
    {
    $fp     =@fopen($filename,"rb+");
    $record =@file($filename);
    if(!$record)
    return 0;
    if($rownum>=0 && $rownum<=count($record))
    {
    //******  把新的一行赋给旧的一行所在的元素 ******
    $record[$rownum-1]=$content."\r\n";
    $total="";
    for($i=0;$i<count($record);$i++)
    {
    $total .=$record[$i];
    }
    if(fwrite($fp,$total))
    {
    fclose($fp);
    return 1;
    }
    else
    {
    fclose($fp);
    return 0;
    }
    }
    else
    {
    fclose($fp);
    return 0;
    }}
      

  2.   

    jimmyzhan() 
    你的这个程序执行后修改不了,数据库数据变都没变.*  ->$filename 指定文件
    *  ->$rownum   指定行
    *  ->$content  新的内容这三个我都得到了.
      

  3.   

    我这里运行可以啊.
    我的是php文件和文本文件都放在同一个目录下.
    modifyRow("a.txt",3,"新的内容");
    关于那个"\r\n",你可以试试用"\n"可能是你指定的文件路径不对.
      

  4.   

    看看你的文件是不是可以写入?
    用is_writable()试试
     
      

  5.   

    文件是可以写入的.我试了还是修改不了.你发个社区短消息告诉我你的QQ或MSN行吗,你把你的文件传给我看看...