【问题标题】:delete a line and replace with new text in a txt file删除一行并用 txt 文件中的新文本替换
【发布时间】:2016-06-22 08:06:38
【问题描述】:

我有一个包含 20 行的 txt 文件,我想用输入中的新文本替换第 4 行...我尝试了this 和其他一些但没有解决我的问题。 PHP代码

<?php 
if(isset($_POST['submit'])){

$selected_file = $_POST['files'];
$line = $_POST['to_line'];
$text = $_POST['text'];


//opn file 
$file_open = fopen($selected_file,"r+") or die('Fail to open a file');
//fwrite($file_open,$text);


$file_array = file($selected_file);
$file_array[$line] = $text;
$file_array = implode($file_array);
file_put_contents($selected_file,$file_array);

?>

HTML

<form name="write" method="post" action="">
<table>

<tr><td>Select File</td><td><select name="files" style="width:183px;">
<?php



 foreach ($a = scandir('.') as $file){
    $extension = pathinfo($file, PATHINFO_EXTENSION);
   if($extension == 'txt' || $extension == 'doc'){
 echo"<option>".$file."</option>";
 }}


?>

></select></td></tr>
<tr><td>Line</td><td><select name="to_line" style="width:183px">

<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
<option>5</option>
<option>6</option>
<option>7</option>
</select>
</td></tr>
<tr><td>Write Text</td><td><textarea name="text" style=" height:120px" ></textarea></td></tr>
<tr><td></td><td><input type="submit" name="submit" value="Save" /></td></tr>


</table>
</form>

我想要什么 我想从下拉列表(第 # 行)中选择一个值,整行将替换为新文本。

【问题讨论】:

  • 到底哪里失败了?你调试过源代码吗?
  • 它只是将文本添加到行尾。我想用新文本替换整行。
  • 因为您将 [0] 与 [5] 内爆,并且由于它只有 2 个项目,所以它添加到最后,您需要在将数据分配给某个元素之前分解文件。另请注意,[4] 并不表示第 4 行,而是第 5 行。
  • 这段代码不起作用...给我另一个代码示例来解决它...如果可能的话。!!!

标签: php file fwrite


【解决方案1】:

尝试以下解决方案,同时确保文件具有写入权限:

if(isset($_POST['submit'])) {

    $selected_file = $_POST['files'];
    $line = $_POST['to_line'];
    $text = $_POST['text'];

    $file_array = file($selected_file);
    $file_array[$line - 1] = $text."\n";
    $file_content = implode("", $file_array);
    $f = fopen($selected_file, 'w+') or die('unable to open');
    fwrite($f, $file_content);
    fclose($f);
}

【讨论】:

  • ..你已经被证明是最好的兄弟......但又有点问题,有时它可以工作,有时不能,最后还出现了一个正方形......
  • 可能是您文件中的一些特殊字符
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-09-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多