我想用@username像Twitter一樣實現用戶提及。但是,在我的應用程序中,用戶名可能會改變。我的方法是在保存到數據庫之前解析帖子並將所有@username轉換爲@userId。你覺得這怎麼樣?有沒有人有更好的選擇?如何存儲用戶提及
Q
如何存儲用戶提及
2
A
回答
4
按原樣保存原始文本,並使用uid和用戶名創建相關記錄表。
示例模式:
後[表]
id
text
user_mention [表]
id
post_id
user_id_mentioned
user_name_mentioned
當後保存,你的代碼應該通過創造所有user_mention記錄。您可以通過提及表循環發送電子郵件或其他任何您想要做的事情。
如果用戶更改其用戶名,則您現在有選項用新用戶名更新帖子,或者將舊用戶名鏈接指向正確的用戶。
我的法則是永遠,永遠改變原來非結構化文本保存到數據庫之前(但合理性檢查,以避免注射和諸如此類的東西),並修改數據只輸出。這意味着你總是有用戶輸入的數據,你永遠不知道什麼時候會有價值。
也許有一天,你有興趣在被提及n次後更改了用戶名?或者其他一些你無法得到的報告,因爲你修改了非結構化數據。你永遠不知道什麼時候你會想要原始數據,在這種情況下,你會得到額外的好處,讓你的文本更容易處理。
0
是的,我認爲在發佈時間檢查用戶名列表,並將它們內部轉換爲用戶ID是有道理的。然後,無論何時顯示帖子,都將用戶標識翻譯回當前用戶名。
注意,這將是對非動態內容更加困難,如發送電子郵件等
另外,我會確保用戶名顯示在的方式,清楚地表明他們」不要說OP張貼的話,否則,這將給用戶將文本注入其他人的帖子的方式。
0
相關問題
- 1. 如何創建CVS存儲庫以及如何添加用戶
- 2. 存儲用戶OpenID以及如何處理不同的提供商網址
- 3. 何處以及如何存儲用戶權限?
- 4. symfony在哪裏以及如何存儲用戶角色
- 5. 如何提及MantisBT用戶注意
- 6. 如何在slack.client中提及用戶
- 7. 如何存儲用戶sql where子句,以及如何將其應用於select?
- 8. 註釋的存儲位置以及如何提取它們?
- 9. 如何發送存儲在SQLite數據庫到另一個用戶,以及如何存儲在sqlite的
- 10. Keycloak提供商和用戶存儲
- 11. 存儲用戶提交的數據
- 12. 如何爲用戶提供文件存儲限制?
- 13. 如何存儲有關用戶提供的更改的信息?
- 14. 我應該存儲/不存儲在TFS中以及如何?
- 15. 如何使用localStorage存儲用戶ID
- 16. symfony2:記錄用戶的語言環境如何以及在哪裏存儲?
- 17. 獲取pygame屏幕上的用戶輸入以及如何存儲它
- 18. moodle如何存儲用戶的響應
- 19. 如何存儲其他用戶信息?
- 20. 如何使用redux存儲客戶端?
- 21. Matlab GUI如何存儲用戶數據
- 22. 如何存儲用戶的位置?
- 23. 如何在UID下存儲Firebase用戶
- 24. 如何存儲其他用戶信息
- 25. 如何永久存儲用戶數據
- 26. 如何更改存儲庫的用戶?
- 27. Swift:如何存儲用戶偏好?
- 28. 如何存儲用戶活動記錄
- 29. 如何存儲用戶認證信息?
- 30. 如何使用python來提取提及?
謝謝您的回覆。我在顯示之前將userId轉換回當前用戶名。唯一的問題是我發送電子郵件給成功放入數據庫後提到的用戶。文本然後包含ID而不是用戶名。 你也可以請你詳細說明你的第三段。我不太明白。感謝您的時間和迴應。 – nezgerland
另外,爲了提取提到從文章中,我使用下面的正則表達式: 「/ @(\ w +)/是」 我已經看到了很多複雜的正則表達式這purporse。但我認爲這就夠了。你有什麼意見? – nezgerland
我認爲'/ @(\ w +)/'比較樂觀 - 比如'user @ example.com'。 – zigdon