日期:2014-05-17  浏览次数:20568 次

新浪@原理要怎么实现!!
在新浪发布微博时!可以@很多好友!然后被@的好友给可以收到私信!!这个是用什么原理做的呢??、

比如:

向@A 说我在测试这个!!@B @C


发布完后,我想同时向这三个用户发私信!!

------解决方案--------------------
提交发布短信的时候用正则表达式判断其中都@了谁,然后执行发私信等任务。
------解决方案--------------------
我给你举个例子:
   qz362100 说你谁是? 
   sp1234 说我在这里
   qz362100 
   sp1234
这样4个字符串,你能不能分辨出4个id?只不过前两个随后有" 说xxxxx"而已,后两个没有后缀而已。
------解决方案--------------------
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            string s = "向@A 说我在测试这个!!@B @C";
            var atusers = Regex.Matches(s, @"@(\w+?)").Cast<Match>().Select(x => x.Groups[1].Value);
            foreach (string user in atusers)
                Console.WriteLine(user);
        }
    }
}

------解决方案--------------------
本帖最后由 fengyarongaa 于 2013-01-02 23:41:16 编辑

其实就只是在发布微博的时候做了一系列的判断。
把你的@的ID进行关联,在系统消息表中插入提示数据一行,下次对方登陆或者定时推送的时候反过来查询有木有接受人ID是我的消息,就看到了。

再处理这个@的过程中当然不只是在消息中进行插入,还需要对@这里的进行标签替换。
1,对于能找到ID的情况下:替换成对用户主页的一个链接(也可能这个a标签里面有绑定js方法,鼠标移到@的上面显示资料卡等小功能)。但是页面固定的JS要有处理这个方法,提前有一个约定。
2,对于数据库中不能找到ID的情况下:又有两种情况,一是用户输入错了,而是微博同步的时候重名了。而这两种情况发生的时候就直接显示@到的ID,不用做处理。

当然根据业务要求(微博的业务大同小异)还有很多这样的部分需要进行特定的处理和判断。我们微博的数据库设计保存了两种数据,第一份是用户的原始微博,第二是被处理过添加了各种标签和事件的最后输出显示微博。