2011-10-06 22 views
1

我正在開發,其中用戶按以下格式輸入他的消息的系統:如何分析用戶提到的PHP

嘿@約翰,你在@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()。

+2

有什麼問題嗎? – Ariel

+1

對我來說,這看起來不是問題。你爲什麼有這個問題? – BoltClock

回答

2

你想用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; 
+0

非常感謝它,就像一個魅力好友.. – Wh0RU

+0

不用擔心,與項目祝你好運! – SW4