我正在开发一个系统,用户可以按以下格式输入他的信息:
嘿@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()。
答案 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;