2016-03-08 152 views
-1

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

<?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

确切部位在哪里失败?你调试过源代码吗? – RhinoDevel

+0

你有什么问题? –

+0

它只是将文本添加到行的末尾。我想用新文字替换整行。 – Khan

回答

0

尝试下面的解决方案还确保文件的写权限:

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); 
} 
+0

..你已经证明是最好的兄弟...但再次有点问题的一些时间它的工作和一些时间不,也是一个正方形出现在最后... – Khan

+0

可能是在您的文件中的一些特殊字符 –