求教php使用TXT数据库(读取和修改文本)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求教php使用TXT数据库(读取和修改文本)相关的知识,希望对你有一定的参考价值。

根据这个网页
〈form method="post">
<input type="text" name="user" />
<input type="text" name="pass" />
<input type="submit" name="Submit" value="提交" />
</form>
<?php
/*写入*/
if ($_POST[Submit])
$fp=fopen("db.txt","a");
fwrite($fp,$_POST[user]."|".$_POST[pass]."\r\n"); //写入数据,中间用|隔开
fclose($fp);

用户名和密码写入完了后需要修改怎么做(删除和修改),最好详细一点。谢谢了
回答详细易懂的话追加20分
我的意思是如果 我的数据库db.txt 里面已经有几条信息了 其中一个是 Z|Z 我如何修改Z|Z 变成W|W
关于删除我的意思是 db.txt 里面已经有几条信息了 其中一个是 Z|Z 我如何删除 Z|Z这一条信息

我建议一下吧,文本数据库的例子本来太多,但是为了逻辑简化,最好通过专门接口实现文件与数据的转换,可以采用我下面的模板编写:

<?php
//文件最前面定义两个全局变量,数据库文件名和用户数组
$pwd_db_file=\'db.txt\';
$UserPassword=array();

//下面的pwd_db_read函数,把文件内容读入到全局数组中
function pwd_db_read()
global $pwd_db_file, $UserPassword;
$fp=fopen($pwd_db_file,\'r\');
while ($s=fgets($fp))
list($usr,$pwd)=explode(\'|\', $s);
$UserPassword[$usr]=$pwd;

fclose($fp);


//下面的pwd_db_write函数保存数组内容到文件中
function pwd_db_write()
global $pwd_db_file, $UserPassword;
fp=fopen($pwd_db_file, \'w\');
foreach ($UserPassword as $usr=>$pwd)
fputs($fp,"$usr|$pwd\\n");
fclose($fp);


//有了上面的全局变量和函数,要写什么功能都简单
//下面假释本脚本调用的时候通过reg.php?job=add&user=...&pass=...
//的格式进行调用,job为add表示添加用户,del表示删除,modi表示修改
//另外的user和pass表示用户名或者密码,job不是以上内容表示登录

//主程序一开始就打开数据库
pwd_db_read();
//下面判断功能
if ($jon==\'add\')
if (array_key_exists($user,$UserPassword)) echo "用户 $user 已经存在!"
else $UserPassword[$user]=$pass;//就一句话,简单吧
elseif (job==\'del\')
unset($UserPassword[$user]);//你自己考虑编写是否确认删除的内容
elseif ($job==\'modi\')
if (array_key_exists($user,$UserPassword)) $UserPassword[$user]=$pass;//和添加是不是有点类似
else echo "用户 $user 不存在!"
else
if ($UserPassword[$user]==$pass)
echo \'密码正确。\';
//接下来可能要做许多事情
else echo \'密码错误!\';

//程序最后保存数据库修改
pwd_db_write();
?>

看得懂吗,没有上机调试,语法问题可能难免,如果发现不明白的问题请补充。
参考技术A --------------再次补充!-------------------
我做的一个较为完整的PHP4+文本数据库+cookie 简单用户系统,可以注册、登录、修改、删除
(只能修改和删除自己的用户信息)
下载地址: http://www.mjbox.com/u/davidaq/txtlogin.rar
谢我就赏脸常到我的博客光顾光顾,不用给多少积分!!
-------------------------------------------

删除:
unlink("db.txt");
修改、写入:
$method="w";//打开方式
$fp=fopen("db.txt",$method);
fwrite($fp,$_POST[user]."|".$_POST[pass]."\r\n"); //写入数据,中间用|隔开
fclose($fp);
$method变量为
a:在文档末尾写入
w:先删除再写入
r:读取
r+:读取或在文档开头写入
一般修改时就是先用r读取,再用strtr函数或正则表达式替换数据,再用w方式写入。

建议你下载一个php手册自己学习:http://www.mjbox.com/u/davidaq/down/PHP%E6%89%8B%E5%86%8C.rar

按照你的意思继续补充:
先是读取db.txt
$fp=fopen("db.txt","r");
$content=fread($fp,filesize("db.txt"));
fclose($fp);

然后是替换,方法有2
strtr函数:
$write=strtr($content,array($old[0]=>$new[0],$old[1]=>$new[1] [,....]));
//这会将$content中 ++所有++ 的与$old[*]相同的地方替换为$new[*]

或正则表达式preg_replace函数:
$pattern=array("/$old[0]/","/$old[1]/"[,....]);//注意“/”必须要有,那表示开头和结尾
$replace=array($new[0],$new[1][,....]);//这里就不必有“/”
$limit=1; //设置替换数量php4.1以后才可以使用
$write=preg_replace($pattern,$replace,$content,$limit);
//这里就将$pattern替换为$replace一($limit)次

/*删除其实就是将 $old 替换为 "" */
最后写入:
$fp=fopen("db.txt","w");
fwrite($fp,$write);
fclose($fp);

这里真实高手云集呀
参考技术B 刚看到留言~~~
重写了一下,功能相对完善了一些。实际应用你可以简单封装,最起码能减少一半代码量。
其他的比如搜索等等,你看过代码自己也应该能写出来。
------代码段--------------------------------------------
<form method="post">
<input type="text" name="user" />
<input type="text" name="pass" />
<input type="submit" name="Submit" value="提交" />
</form>
<?php
/*写入*/
if ($_POST[Submit])
$fp=fopen("db.txt","a");
fwrite($fp,$_POST[user]."|".$_POST[pass]."|".time()."\r\n"); //写入数据,中间用|隔开
fclose($fp);

/*读取*/
$lines=file("db.txt");
foreach ($lines as $value)
$line=explode("|",$value);
echo "no1:$line[0]--no2:$line[1]---time:$line[2]--<a href=test.php?act=del&time=$line[2]>删除</a>--<a href=test.php?act=mod&time=$line[2]>修改</a><br>";

/*删除*/
if ($_GET[act]=="del")
$time=trim($_GET[time]);
foreach ($lines as $key=>$value)
$line=explode("|",$value);
if (trim($line[2])==$time) //遍历数组,定位符合条件的key,并删除改行
unset($lines[$key]);
break;


unlink("db.txt");
$fp=fopen("db.txt","w");
foreach ($lines as $value)
fwrite($fp,$value); //写入删除后的新数组

fclose($fp);
echo "<script>location.href='test.php';</script>";

/*修改*/
if ($_GET[act]=="mod")
$m1="修改值1";
$m2="修改值2";
$m3=time();//修改时间
$time=trim($_GET[time]);
foreach ($lines as $key=>$value)
$line=explode("|",$value);
if (trim($line[2])==$time) //遍历数组,定位符合条件的key,并修改改行
$lines[$key]=$m1."|".$m2."|".$m3."\r\n";
break;


unlink("db.txt");
$fp=fopen("db.txt","w");
foreach ($lines as $value)
fwrite($fp,$value); //写入修改后的新数组

fclose($fp);
echo "<script>location.href='test.php';</script>";

//print_r("<pre>");
//print_r($lines);
?>

Excel,VBA求教表格和TXT文本互转。

Excel,VBA求教表格和TXT文本互转。想学习VBA对txt的读取和写入。先简单点的。
1,对当前子表使用区域进行复制粘贴到txt中(有分列空格)。
2,对特定txt文档读取,粘贴到当前子表指定单元格(开始)。
3,实现txt,隐藏打开、保存及关闭。
先谢谢知道。(´-ω-`)

Const Filename = "d:\\1.txt"
Sub 复制Excel表格到Text文件()
On Error Resume Next
    Dim srcRng As Range, destRng As Range, textWorkBook As Workbook, wb As Workbook
    Application.DisplayAlerts = False
    
    '打开Text文件前,保存当前活动的工作薄对象
    Set wb = ActiveWorkbook
    Set srcRng = wb.ActiveSheet.UsedRange
    If Dir(Filename) = "" Then
        '如果Text文件不存在,新建一个工作薄,粘贴区域从A1开始
        Set textWorkBook = Workbooks.Add
        Set destRng = textWorkBook.Sheets(1).Range("A1")
    Else
        '通过Workbooks的OpenText方法,打开Text文件
        Workbooks.OpenText Filename:=Filename
        If Err Then
            MsgBox "打开文件 " & Filename & "出错。错误信息如下:" & vbCrLf & vbcrlr & Err.Description
            Exit Sub
        End If
        
        Set textWorkBook = ActiveWorkbook
        '查找粘贴开始位置,即现有数据的最后一行的下一行
        '为了防止是空表时,end操作会定位到最后一行
        Set destRng = textWorkBook.Sheets(1).Range("A1").End(xlDown).Offset(1)
        If Err Then
            Set destRng = textWorkBook.Sheets(1).Range("A1")
        End If
    End If
    
    textWorkBook.Windows(1).Visible = False '隐藏Text文件的窗口,既可以达到隐藏打开,保存和关闭。
    srcRng.Copy destRng  '表的使用区域复制到Text文件的工作薄,指定位置
    
    '使用Workbook的SaveAs方法,通过指定FileFormat参数为xlText,将工作薄另存为Text文件。
    textWorkBook.SaveAs Filename:=Filename, FileFormat:=xlText
    textWorkBook.Close SaveChanges:=True
    Application.DisplayAlerts = True
End Sub
Sub 复制Text文件到Excel表格()
On Error Resume Next
    Dim destRng As Range, textWorkBook As Workbook, wb As Workbook
    Application.DisplayAlerts = False
    
    '打开Text文件前,保存当前活动的工作薄对象
    Set wb = ActiveWorkbook
    
    '查找粘贴开始位置,即现有数据的最后一行的下一行
    '为了防止是空表时,end操作会定位到最后一行
    Set destRng = wb.ActiveSheet.Range("A1").End(xlDown).Offset(1)
    If Err Then
        Set destRng = wb.ActiveSheet.Range("A1")
        Err.Clear
    End If
    
    If Dir(Filename) = "" Then
        'Text文件不存在
        MsgBox "文件 " & Filename & "不存在!"
        Exit Sub
    Else
        '通过Workbooks的OpenText方法,打开Text文件
        Workbooks.OpenText Filename:=Filename
        If Err Then
            MsgBox "打开文件 " & Filename & "出错。错误信息如下:" & vbCrLf & vbcrlr & Err.Description
            Exit Sub
        End If
        
        Set textWorkBook = ActiveWorkbook
    End If
    
    textWorkBook.Windows(1).Visible = False '隐藏Text文件的窗口,既可以达到隐藏打开,保存和关闭。
    textWorkBook.Sheets(1).UsedRange.Copy destRng  '表的使用区域复制到Text文件的工作薄,指定位置
    
    '关闭Text文件。
    textWorkBook.Close SaveChanges:=False
    Application.DisplayAlerts = True
End Sub

使用workbooks的OpenText方法来打开Text文件,然后可以向操作Excel工作表来操作Text文件。

参考技术A 隐藏打开
是怎么打开?TXT没这个说法吧

以上是关于求教php使用TXT数据库(读取和修改文本)的主要内容,如果未能解决你的问题,请参考以下文章

在LINUX 下 使用PHP 修改文本文件

如何使用PHP读取文本文件内容

java读取txt文件,显示换行和空格,求教!

php如何读取文本指定的内容?

关于PHP文件操作: php保存数据到文本文件,怎么弄?

A.PHP读取txt文本文件并分页显示的方法