如何解析PHP中的用户提及

时间:2011-10-06 08:42:31

标签: php

我正在开发一个系统,用户可以按以下格式输入他的信息:

嘿@john你要参加@elise的生日派对吗?

此处,只要您在文本框中输入@下拉列表,就可以从中选择所需的名称。

我的问题是在发布消息时应该是这样的HTML代码。

Hey <a href="http://www.mysite.com/user/id/123">John Doe</a> are you coming in
birthday party of <a href="http://www.mysite.com/user/id/789">Elise Lisa</a>?

preg_replace("/@([A-Za-z0-9_]+)(?=\?|\,|\;|\.|\s|\Z)/", <new_html>, <old_string>);

那么如何在字符串中找到@的所有出现并处理它们?因为我需要传递函数调用getUserName($ shortname)和getUserID($ shortname),其中$ shortname是@之后的文本。此外,我需要为每个相应短名称的调用调用函数NotifyUser()。

1 个答案:

答案 0 :(得分:3)

您希望使用preg_replace_callback来浏览字符串,识别以“@”开头的所有字词,然后对这些字词运行:

$text = 'say hello to @elise and @john';

function replace_at_symbol($matches){
    return "(here you would replace: ".$matches[0]." with something)";
}

$output = preg_replace_callback("/([@][a-zA-Z-0-9]+)/", "replace_at_symbol", $text);
echo $output;