2011-06-07 4 views
1

Je développe un site en PHP et il est configuré avec son propre statut et système de mur en ce moment (similaire à Twitter et Facebook, respectivement). J'essaie de faire en sorte qu'un utilisateur puisse changer son nom d'utilisateur plus tard et tous les statuts ou messages muraux qui mentionnent l'utilisateur (comme dans "@woo hi!") Seront remplacés par le nouveau nom d'utilisateur. J'ai essayé d'utiliser la requête REPLACE dans MySQL, mais je ne peux évidemment pas remplacer 'username' par 'newusername', car si quelqu'un avec le nom d'utilisateur de @w a changé son nom d'utilisateur en @f, alors quelqu'un d'autre compte avec le nom d'utilisateur @woo deviendra @foo. Obtenez ma dérive?Meilleure façon de REMPLACER avec MySQL pour les noms d'utilisateur

Je pense que mon option est de créer mon propre format pour enregistrer les statuts/messages muraux en remplaçant le nom d'utilisateur @woo par le | woo | (ou tout ce qui dénote une fin du nom d'utilisateur), mais j'étais curieux si quelqu'un d'autre avait une idée différente sur le sujet, ou si quelqu'un savait faire la requête REPLACE le faire pour moi (comme un moyen de le faire scanner en entier !.. mots, cette façon @w = @woo J'aimerais entendre ce que vous pensez

EDIT:

je me suis dit ce que je vais faire et je mettre à jour ce pour la future référence de quelqu'un d'autre J'ai décidé de remplacer tous les @usernames dans les status/wall posts par # @ usernames # et de les sauvegarder comme ça dans la DB, maintenant je peux utiliser une simple requête REPLACE avec MySQL pour remplacer toutes les mentions de nom d'utilisateur dans les status/wall posts, et n'aura pas de problèmes d'ambiguïté (@w se transforme en # @ w # dans ma base de données, ce qui signifie que changer le nom d'utilisateur @w (# @ w #) en @f (# @ f #) ne changera pas # @ woo # à # @ foo #. Bien sûr, lors de l'affichage des noms d'utilisateur dans les messages maintenant, je dois exécuter le contenu grâce à une fonction "non formaté" avec le caractère # au début et à la fin, mais ce n'est pas trop grave.

+0

il n'y a que twitter et facebook, ne perdez pas de temps :) – dynamic

+2

Et si MZ avait abandonné à cause de MySpace? : p –

+2

oui123, je préfère les réponses qui progressent mes connaissances sur la question à portée de main s'il vous plaît. Et comme il n'y avait que twitter et facebook, il y avait aussi "seulement myspace". – Lamoni

Répondre

1

Vous pouvez concevoir votre base de données pour stocker des données supplémentaires sur chaque statut/messages, par exemple, une liste de tous les ID utilisateur pour les utilisateurs mentionnés dans la publication. Ensuite, il serait facile d'exécuter une recherche ciblée et remplacer par:

  • Localisation tous les messages qui mentionnent un utilisateur changeant leur nom en se joignant à leur id
  • Remplacement $oldname avec $newname uniquement dans les messages

vous pouvez toujours avoir une petite marge d'ambiguïté (mentions multiples dans un seul poste), mais vous devriez être en mesure d'écrire une expression régulière qui identifie $oldnameet non une sous-chaîne de $oldname.

+0

Merci pour la réponse, j'aime aussi l'idée. Je vais certainement considérer cette idée. – Lamoni

Questions connexes