Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 用MySQL替换用户名的最佳方法_Php_Mysql_Replace - Fatal编程技术网

Php 用MySQL替换用户名的最佳方法

Php 用MySQL替换用户名的最佳方法,php,mysql,replace,Php,Mysql,Replace,我正在用PHP开发一个网站,现在它的设置有自己的状态和墙系统(分别类似于twitter和facebook)。我正在尝试这样做,以便用户以后可以更改其用户名,任何提到该用户的状态或帖子(如“@woo hi!”)都将替换为新用户名 我曾尝试在MySQL中使用替换查询,但显然我不能将“username”替换为“newusername”,因为如果用户名为@w的人将其用户名更改为@f,那么用户名为@woo的其他人的帐户将变成@foo。明白我的意思吗 我想我的选择是基本上创建我自己的格式来保存状态/墙上的帖

我正在用PHP开发一个网站,现在它的设置有自己的状态和墙系统(分别类似于twitter和facebook)。我正在尝试这样做,以便用户以后可以更改其用户名,任何提到该用户的状态或帖子(如“@woo hi!”)都将替换为新用户名

我曾尝试在MySQL中使用替换查询,但显然我不能将“username”替换为“newusername”,因为如果用户名为@w的人将其用户名更改为@f,那么用户名为@woo的其他人的帐户将变成@foo。明白我的意思吗

我想我的选择是基本上创建我自己的格式来保存状态/墙上的帖子,用| woo |替换用户名@woo(或任何表示用户名结尾的内容),但我很好奇是否有其他人对此有不同的想法,或者是否有人知道如何使用替换查询来为我执行此操作(就像是一种让它扫描为整个单词的方法,这样@w!=@woo。我很想听听你的想法

编辑:


我明白了我要做什么,并且正在更新它以供其他人将来参考。我决定用#@usernames#替换statuses/wall posts中的所有@usernames,并将它们像那样保存在数据库中。因此,现在我可以用MySQL使用一个简单的替换查询来替换statuses/wall posts中提到的所有用户名,并且不会出现歧义问题(@w在我的数据库中变成了#@w#,这意味着将用户名@w(#@w#)更改为@f(#@f#)不会将#@woo#更改为#@foo#。当然,现在在帖子中显示用户名时,我必须通过“未格式化”运行内容函数的开头和结尾都用#分隔,但这还不错。

您可以设计数据库来存储关于每个状态/帖子的附加数据,例如,帖子中提到的用户的所有用户ID的列表。然后,执行目标搜索并替换为:

  • 查找所有提到用户通过id加入而更改其姓名的帖子
  • 仅在那些帖子中将
    $oldname
    替换为
    $newname

你可能仍然有一小部分模棱两可(在一篇文章中多次提到),但您应该能够编写一个正则表达式来标识
$oldname
,而不是
$oldname
的子字符串。您可以将数据库设计为存储关于每个状态/帖子的附加数据,例如,帖子中提到的用户的所有用户ID的列表。然后,执行目标搜索并替换为:

  • 查找所有提到用户通过id加入而更改其姓名的帖子
  • 仅在那些帖子中将
    $oldname
    替换为
    $newname

您可能仍然有一小部分模棱两可(在一篇文章中多次提及),但您应该能够编写一个正则表达式来标识
$oldname
,而不是
$oldname

的子字符串(只有twitter和facebook,不要浪费时间:)如果MZ因为MySpace而放弃怎么办?:pyes123,我更喜欢能提高我手头问题知识的答案。至于只有twitter和facebook,过去也只有“MySpace”。只有twitter和facebook,不要浪费时间:)如果MZ因为MySpace而放弃怎么办?:pyes123,我更喜欢能提高我手头问题知识的答案。至于只有twitter和facebook,过去也只有“MySpace”谢谢你的回复,我也喜欢这个主意。我一定会考虑这个主意。谢谢你的回复,我也喜欢这个主意。我一定会考虑那个主意。