2011-11-19 413 views
2

我想匹配twitter用戶名並用字符串替換它。這是用PHP正則表達式匹配並替換字符串

這是正則表達式我有

/(^|[^a-z0-9_])[@@]([a-z0-9_]{1,20})([@@\xC0-\xD6\xD8-\xF6\xF8-\xFF]?)/iu 

我有一個像

RT @omglol I am hungry @lolomg bla 

字符串我想用html標記有取代每名狀

<a href="http://lol.com">@omglol</a> 

我該怎麼做? Thaks的答案

+0

你可以發佈你也試過的代碼嗎? –

+0

爲什麼在這個問題中有一個苗條和肥胖@? –

+0

@BillyMoon有人用@和@發送推文我想匹配他們。 – Blank

回答

4
$s = "RT @omglol I am hungry @lolomg bla"; 
$p = "/(@\w+)/"; 
$r = '<a href="http://lol.com">$1</a>'; 
print preg_replace($p, $r, $s); 

=> RT <a href="http://lol.com">@omglol</a> I am hungry <a href="http://lol.com">@lolomg</a> bla 
2

你會使用preg_replace。既然你有正則表達式,你只需要構造一個$替換模式。在其中使用$1$2$3佔位符,其中每個對應於(...)捕獲組。

$text = preg_replace(YOUR_REGEX, "$1<a href=$2>:)$2</a>$3", $text); 

你的正則表達式不是很聰明,但可能適用於此。您當然也可以爲href=添加一個基本的URL /前綴。

如果您確實需要以某種方式將twitter名稱轉換爲更復雜的URL,那麼您可能需要使用preg_replace_callback

+0

謝謝! ! ! ! ! – Blank