2010-11-04 115 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); 

处理多句