【发布时间】:2019-10-23 09:52:23
【问题描述】:
我想存储数百万行数据(包含 url、title、description)... 像这样的:
url:example.com|title:some title|description: some description
url:example2.com|title:some other title|description: some other description
我不明白选择分隔符并转义包含该分隔符的实际数据的逻辑或正确方法。
使用双字符 || 然后将实际数据中的任何 | 替换为 \| 是一种好方法吗?
这样我就可以寻找||title:,它在实际标题文本中存在的可能性为零,因为它会是\|\|title:
有没有更好的解决方案?
编辑:不同的行还可以包含不同的变量,例如 url 元标记,并且这些变量没有固定的预定义列表,所以我认为这会阻止我将它们存储为 csv 格式。
我知道我可以将这些编码/解码为 json,但这会使应用程序过于复杂。
【问题讨论】:
-
仅供参考:php.net/fputcsv。是的,你可以“手工”做,但为什么。不要重新发明*。这个 php 函数将为您做所有事情,您不必担心副作用。
-
如果你想让它表现得像不冷不热的垃圾之外的任何东西,你真的应该把它放在某种数据库中。
-
我认为 csv 方法行不通,因为我的变量并不总是存在,不同的行可能存在不同的变量,甚至可能以不同的顺序出现,我会将其添加到我的问题中。
-
空值可以用 CSV 表示。这要好得多,我建议您保持数据结构的一致性(即始终具有相同数量的列允许空)。或者去一个 noSQL 数据库集合。
标签: php file escaping explode plaintext