【发布时间】:2011-02-26 00:13:36
【问题描述】:
我认为已经有关于此的问题,但我找不到。也许解决方案太简单了......无论如何,我有一个平面文件,并希望让用户根据名称更改值。我已经整理好使用fopen('a') 模式创建新的名称+值对,使用jQuery 发送带有newValue 和newName 的AJAX 调用。但是说内容是这样的:
host|http:www.stackoverflow.com
folder|/questions/
folder2|/users/
现在我想更改folder 的值。所以我将folder 发送为oldName 和/tags/ 发送为newValue。覆盖值的最佳方法是什么?列表中的顺序无关紧要,名称将始终在左侧,然后是|(管道)、值,然后是new-line。
我的第一个想法是读取列表,将其存储在数组中,在所有[0] 中搜索oldName,然后更改属于它的[1],然后将其写回文件.但我觉得有更好的方法来解决这个问题?有任何想法吗?也许regex?
【问题讨论】:
-
不要忘记某种锁定机制。 2个脚本同时编辑文件肯定有问题。
-
CSV 是“逗号分隔值”的首字母缩写词,您的分隔符是管道而不是逗号。尽管许多 CSV 导入程序允许您将分隔符设置为不是逗号的字符,但我仍然认为最好将其称为“平面文件”。 en.wikipedia.org/wiki/Flat_file_database
-
@extraneon 是的,这仅适用于管理员。每个管理员将有一个文件。但是为了安全起见,我会研究一下锁定机制(:谢谢你提醒我。@Hostile Fork,是的,我知道,但两者之间真的没有任何实际区别,是吗?
-
“当我使用一个词时,”矮胖子用相当轻蔑的语气说道。 “这就是我选择的意思,不多也不少。” ——“问题是,”爱丽丝说,“你能不能用词来表达这么多不同的东西。” :) 选择准确的术语可以避免混淆并有助于相关标记。
-
@Hostile Fork (: 没有什么比引用 Lewis Carroll 来获得关于语义的观点更重要了。观点采取了。
标签: php regex replace flat-file