這個正則表達式模式讓我感到困惑。PHP正則表達式匹配「@user」任何地方
我有一個用戶名,如@tom
存儲在一個變量。我想在字符串中的任何位置找到與@tom
匹配的模式;開始,中間或結束。
我的目標是匹配,然後替換爲他的個人資料頁面的鏈接。我想我已經明白了,但它並沒有意識到一個詞的結尾。至於它在什麼時候尋找@tom
它也與@tommy
相匹配,這不是我想要的。
這是我到目前爲止有:
$pattern = array();
$pattern[0] = '/'.$possible1.'/i';
$replacement = array();
$replacement[0] = '$1<a href="http://banterme.com/'.$possible1user.'">@'.$possible1user.'</a>';
echo preg_replace($pattern, $replacement, $text);
我使用一個數組,因爲我想匹配所有@的文本(例如:@湯姆是@inga),不只是一個。我簡化了實際的代碼,只顯示了數組的一部分。
UPDATE:基本上,我試圖找出'/'.$possible1.'/i'
應該是不匹配(例如)@tom
到@tommy
。
使用前瞻斷言:'@tom(?!\ w)'這將匹配@tom,後面沒有'\ w' aka'[a-zA-Z0-9_]' – HamZa 2013-04-30 21:35:47
@HamZaDzCyberDeV這工作。如果它不作爲評論,我會將其標記爲解決方案。 – Tom 2013-04-30 23:06:01
謝謝^^我願意讓@reikyoushin拿分,所以只要接受他的回答:-) – HamZa 2013-04-30 23:08:05