Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何更新和删除文本文件中的指定字符串_Php - Fatal编程技术网

Php 如何更新和删除文本文件中的指定字符串

Php 如何更新和删除文本文件中的指定字符串,php,Php,我用一个文本文件作为我网站的一些数据的存储/数据库。我通过在指定的持有者或元素上显示每个内容,成功地将其输出到我的网页中,但不知何故,我想用另一种方式对其进行定制,以满足我的需要 我有这段代码,用于显示文本文件中的内容,并根据用途放置它们 <?php $handle = @fopen("mydb.txt", "r"); while (!feof($handle)) // Loop til end of file. { $buffer = fgets($handle, 40

我用一个文本文件作为我网站的一些数据的存储/数据库。我通过在指定的持有者或元素上显示每个内容,成功地将其输出到我的网页中,但不知何故,我想用另一种方式对其进行定制,以满足我的需要

我有这段代码,用于显示文本文件中的内容,并根据用途放置它们

<?php
$handle = @fopen("mydb.txt", "r");

while (!feof($handle)) // Loop til end of file.
    {
    $buffer = fgets($handle, 4096);
    // Read a line.
    list($a,$b,$c)=explode("|",$buffer);
    //Separate string by the means of |
}
$aa = $a;
$bb = $b;
$cc = $c;
?>


<div id="tabs-1">
    <form id="dbform" action="processor.php" method="GET" >
        <input type="hidden" name="login" value="emailsave" />
        <div id="error"></div>
        <table cellpadding="3" cellspacing="3" align="center" valign="top">
            <tr>
                <td valign="top">
                    <label>Senders email:</label>
                </td>
                <td>
                    <input class="dainput" type="text" name="mailsenders" value="<?php echo $aa;?>" />
                </td>
            </tr>
            <tr>
                <td valign="top">
                    <label>Subject:</label>
                </td>
                <td>
                    <input class="dainput" type="text" name="mailsubject" value="<?php echo $bb;?>" />
                </td>
            </tr>
            <tr>
                <td valign="top">
                    <label>Message:</label>
                </td>
                <td>
                    <textarea style="height: 150px;" class="dainput" type="text" name="mailmsg" ><?php echo $cc;?></textarea>
                </td>
            </tr>
        </table>
        <button class="dabutton">Update</button>
    </form>
</div>
而不是这个

your-email@mail.com | Subscriber | hello
我对任何建议、建议和想法都持开放态度,请指导我。谢谢

使用

这将读取整个文件,并将每一行放入
$lines

如果你只有3行电话,给fgets打3次电话。

我知道我没有回答你的问题,但我想知道。是否有任何理由不能只使用真实数据库或伪数据库,例如SQLite()?这不是对您问题的确切答案,而是通过文本文件显示需要查找的内容:查看前两个答案。@wecsam:这对我来说太重了,我更喜欢使用文本文件,因为我只是觉得我只是在处理一点数据,所以mysql在我的脑海里有点像sqlite,我只是不知道如何通过sqlite实现,我也没有足够的时间切换到sqlite。我可以理解您的顾虑,因为创建数据库和学习访问数据库的SQL命令可能会让人望而生畏,而且容易出错。另一方面,一旦你学会了它,它可以是一个相当节省时间。准确地说,然而,我的整个概念站在这一个(文本文件数据库的概念),所以自从我开始它,然后我只想完成它,因为它是,除此之外,这将是一个大的学习对我来说,将有助于未来的参考很多!你说的“如果你只有3行,给fgets打3次电话”是什么意思?我不容易理解,你能说得更准确一点吗?正如我看到你的答案接近我想要的输出。我的文本文件中有7行。根据你的例子,你有三个单独的条目。如果行数不确定,请使用
。那么最终的代码是什么?我有7行,至少3行。这是我的尝试,我将while条件中的
$lines[]替换为
$lines[0]=$line$行[1]=$line$行[2]=$line因为我认为它代表数组中的行数。我没有得到
7行
部分。如果可以有3到7行,则使用
fgets
7次。对于前3次,只需读取该行,然后(从4到7)检查它是否返回
false
(这意味着文件结束)。为了更好地回答您的问题,您应该提供一些数据模型。
your-email@mail.com | Subscriber | hello
$handle = @fopen(FILE)
$lines = array();
while (false != ($line = fgets($handle)) {
    $lines[] = $line;
}