2010-11-04 149 views
4

我想解壓縮使用php的hashtag後的內容。如何提取hashtag內容?

例如:

$sentence = 'This #Coffee is the #best!!'; 

如何獲得價值 '咖啡' 和 '最佳'?請注意,我不希望感嘆號後「最好

回答

14

一個非常安全的包羅萬象的使用UTF-8/Unicode:當

preg_match_all('/#([\p{L}\p{Mn}]+)/u',$string,$matches); 
var_dump($matches); 

儘管如此,如果你不使用/預期異國情調的字符,這可能會工作得很好,是更具可讀性:

preg_match_all('/#(\w+)/',$string,$matches); 
+0

完美的作品,太感謝你了! – anna 2010-11-04 20:56:00

+0

我修改了正則表達式,以包含也可以包含下劃線和數字字符的hashtags。 #NYE2016:preg_match_all('/#([\ p {Pc} \ p {N} \ p {L} \ p {Mn}] +)/ u',$ string,$ matches); – minaz 2016-02-19 05:45:41

+0

@minaz感謝您的RE。 – 2016-07-22 13:09:23

1

試試這個:

|\#(\w*)| 

一句

來看,我想所有#something#此

它將檢索「東西」和「本」。林假設你只是想在正則表達式,要使用該功能preg_match_all

+2

你爲什麼要逃避'#'? – Gumbo 2010-11-04 20:43:43

+1

我知道不是一個正則表達式實體,但只是一個習慣,以逃避我不太確定的事情。這兩種方式都很好。 – 2010-11-04 21:04:53

0

我想更好:

preg_match_all('/#([^#]+)#/msiU',$string,$matches); 

處理多句