2014-12-10 125 views
0

我目前正在我的網站的個人資料頁面內製作標籤系統。如果用戶指定:+tag[username]其中用戶名等於該用戶的朋友所使用的用戶名,它將preg_replace與該用戶的鏈接的標記。使用strpos查找+標籤很容易,但我所問的問題是如何將用戶名作爲變量。例如:if $ text ='hey + tag [matty]你好嗎?'自定義PHP標記系統的幫助,找到用戶名

if (strpos($text, '+tag[//username//]' !== false)) { 
//get //username// and store as $username 
} 

,使其看起來像這樣:

if (strpos($text '+tag[//username//]' !== false) { 
    $username = "matty"; 
} 

三江源所有誰提前:)

回答

3

有關使用正則表達式匹配功能preg_match如何應對?

$subject = "hey +tag[matty] how are you!"; 
$pattern = '/\+tag\[(.*?)\]/'; 
preg_match($pattern, $subject, $matches); 
$username = $matches[1]; 
echo $username; 

爲了匹配標籤的多個實例,你想使用preg_match_all

$subject = "Hey +tag[matty]! Want to meet up with +tag[keshia] later?"; 
$pattern = '/\+tag\[(.*?)\]/'; 
preg_match_all($pattern, $subject, $matches); 
foreach($matches[1] as $username){ 
    echo $username.'<br>'; 
} 
+0

嘿幽谷,快速回復感謝,在這方面是什麼PREG_OFFSET_CAPTURE辦?再次感謝 – MyiWorld 2014-12-10 21:59:40

+0

來自php.net:'PREG_OFFSET_CAPTURE 如果這個標誌被傳遞,對於每一個發生的匹配,附屬的字符串偏移量也將被返回。請注意,這會將匹配值更改爲一個數組,其中每個元素都是由偏移量爲0的匹配字符串組成的數組,並且其偏移量爲偏移量爲1的字符串。 – 2014-12-10 22:01:28

+0

對於您的用例,實際上可能並不需要。我修改了我的代碼,不使用該標誌。如果你好奇,它會抓取匹配的字符串偏移量。 – Glen 2014-12-10 22:01:54