2012-11-28 53 views
1

我爲我的公會製作了一個社區網站(使用html,css和php手動構建)。最近,我的成員要求能夠在他們的帖子中使用像@username這樣的標籤,然後鏈接到用戶頁面。我已經有這個腳本,如列舉如下:

<?php 

$string = '@user really?'; 

if (preg_match('/(^|\s)@([a-z0-9_]+)/i', $string)) 
{ 

$string = preg_replace('/(^|\s)@([a-z0-9_]+)/i', '<a href="user/$2">@$2</a>', $string); 

echo $string; 
} 
else { 

echo $string; 

} 

?> 

這工作得很好,而且我注意到,$ 2是用戶的名字,但是,因爲所有用戶的名稱以大寫字母開始,在$ 2需要大寫,而不是每個人都這樣做。有沒有辦法將它編碼爲自動大寫$ 2,還是應該讓用戶記住要大寫?

Thanx提前, 史蒂芬

回答

0

使用ucfirst($ 2),如果你想要的一切資本

0

我增加了更多的preg_replace,它現在鏈接到用戶能夠利用的第一個字符 和strtoupper($ 2)不管你如何輸入姓名,只要你有@符號(@user,@USER,@User,@uSER等等)。對於任何需要我的解決辦法,我會發布它下面:

<?php 

$proper_str = "going to battle with @ADROK"; 

$proper_str = ucfirst(strtolower($proper_str)); 

$proper_str = preg_replace('/@[a-z]/e', 'ucfirst(strtoupper("$0"))', $proper_str); 

$proper_str = preg_replace('/(^|\s)@([a-z0-9_]+)/i', ' <a href="user/$2">@$2</a>', $proper_str); 

echo $proper_str; 

?> 

,如果你改變出頭的周圍,使它:

<?php 

$proper_str = "going to battle with [email protected]"; 

if (preg_match('/(^|\s)@([a-z0-9_]+)/i', $proper_str)) 

{ 

$proper_str = ucfirst(strtolower($proper_str)); 

$proper_str = preg_replace('/@[a-z]/e', 'ucfirst(strtoupper("$0"))', $proper_str); 

$proper_str = preg_replace('/(^|\s)@([a-z0-9_]+)/i', ' <a href="user/$2">@$2</a>', $proper_str); 

echo $proper_str; 

} else { 

$proper_str = ucfirst("$proper_str"); 

echo $proper_str; 

} 

?> 

然後,它會獨自離開的電子郵件地址,並後的確認第一個字母大寫!