如何存储用户提及

时间:2011-09-22 19:04:29

标签: php twitter hashtag

我想在Twitter中使用@username来实现用户提及。但是,在我的应用中,用户名可能会更改。我的方法是在保存到数据库之前解析帖子并将所有@username转换为@userId。你觉得这怎么样?有没有人有更好的选择?

3 个答案:

答案 0 :(得分:5)

按原样存储原始文本,并使用uid和用户名创建相关记录表。

示例模式:

发表[table]

id
text

user_mention [table]

id
post_id
user_id_mentioned
user_name_mentioned

保存帖子后,您的代码应该通过并创建所有user_mention记录。您可以遍历提及表以发送电子邮件或其他任何您想要做的事情。

如果用户更改了用户名,您现在拥有选项,可以使用新用户名更新帖子,或者将旧用户名链接到正确的用户。

我的规则是永远不要在保存到数据库之前修改原始的非结构化文本(但要检查它以避免注入和诸如此类)并仅修改数据 在输出上。这意味着您始终拥有用户输入的数据,而您永远不知道什么时候会有价值。

也许有一天,您有兴趣在被提及多次后更改了用户名?或者您修改非结构化数据时无法获得的其他报告。你永远不知道什么时候你会想要原始数据,在这种情况下,你会得到额外的好处,让你的文字更容易使用。

答案 1 :(得分:0)

是的,我认为在发布时检查用户名列表,并在内部将其转换为用户ID是有道理的。然后,每当您显示帖子时,将用户ID转换回当前用户名。

请注意,对于非动态内容,例如发送的电子邮件等,这将更加困难。

另外,我确保用户名的显示方式明确表明它们不是OP发布的单词,否则会为用户提供一种方式将文本注入其他人的帖子。< / p>

答案 2 :(得分:-1)

是的,我觉得这很好。 Twitter本身不只是使用Usernames它使用UserIDs

它获取tweeters用户ID然后查找它以获取实际用户名。

文档:MentionsLookup

每个用户都应拥有唯一的ID。在将ID发送到用户可见的任何位置之前,您应该将ID与用户名进行匹配。