1

我想将用户对我网站的评论存储在 txt 文件中。所以.. 我想知道如何使用 php 编辑 txt 文件内容。

我的txt文件内容是这样的......

uid=5
comment="Hello world"
time="2013:11:21:xx:xx"

uid=6
comment="Test comment"
time="2013:11:21:xx:xx"

所以..如果我想编辑 uid=5 的评论,我怎么能用 php 来做呢?或者告诉我一个更好的方法,内容应该放在文本文件中以使这项任务变得容易。

我不喜欢使用数据库来存储我的评论。请有人在这件事上帮助我。坦斯克

4

4 回答 4

2
$txt_file = file_get_contents('path/to/file');
$rows = explode("\n", $txt_file); //you get all rows here
foreach ($rows as $row => &$data) {
    if (strstr($data, 'uid=5') !== FALSE) {
        //it means the following line contains your comment, 
        //work with it as string
        $rows[$row + 1] = "comment=" . $newComment;
    }
    $data = $data . "\n";
}
file_put_contents('path/to/file', $rows);
于 2013-10-21T16:09:42.743 回答
1

json 提供了一种将数组序列化为字符串的简单方法。
使用json_decodejson_encode您可以将上面的示例转换为每行有一个 json 记录。

然后使用上面的答案一次读取一行并查找您想到的 uid。只需 json_decode 该行即可获取评论的整个数组。

此方法允许您稍后更改评论的属性数量和/或使某些属性可选,而不会使文件解析复杂,或依赖双空白链接或空格技巧来分隔记录。

文件示例

{ 'uid':'5','comment'='Hello world','time'='2013:11:21:xx:xx' }\r\n
{ 'uid':'6','comment'='Hello world','time'='2013:11:21:xx:xx' }\r\n
于 2013-10-21T16:18:46.627 回答
0

如果您没有可用的数据库服务器,我建议您使用SQLite。它就像一个真正的数据库服务器,但它将数据存储在磁盘上的文件中。仅使用常规文本文件,您迟早会遇到麻烦。

于 2013-10-21T16:04:36.423 回答
0

我同意 Bhavik Shah 的观点,如果您不能使用数据库,那么使用 csv 会更容易。但是,假设您不能执行以下任何一项,这是一个解决方案,不是最优雅的,但仍然是一个解决方案。

$file = 'myfile.txt';
$fileArray = file( $file );
$reachedUser = false;
for( $i=0; $i<=count($fileArray); $i++ ){
    if( preg_match('/uid=6/', $fileArray[$i] ) == 1 ){
        $reachedUser = true;
        continue;
    }
    if( $reachedUser && preg_match('/comment=/', $fileArray[$i]) ){
        $fileArray[$i] = "comment=\"This is the users new comment\"\n";
        break;
    }
}
reset( $fileArray );

$fh = fopen( $file, "w" );
foreach( $fileArray as $line ){
    fwrite( $fh, $line );
}
于 2013-10-21T17:04:16.957 回答