在字符串中查找Hashtags

时间:2018-01-20 06:21:41

标签: php

我试图找到String

中的所有主题标签

示例字符串:

  

Hello World #Hello #World #Hello-World #Hello_World#Test-Tag

我尝试使用以下代码:

preg_match_all('/#([^\s]+)/', $postbody, $matches);
    $tags = implode(',', $matches[1]);
    var_dump($tags);

结果是

  

您好,世界,你好,世界,程序hello_world,试验标签

如何以A-Z,a-z和0-9

之外的任何字符结束

我的目标输出是

  

Hello,World,Test

我希望它在到达一个不是字母或数字也不会打印重复的字符之前就停止。

参考: Get hashtag from string reference

1 个答案:

答案 0 :(得分:1)

您可以使用[a-zA-Z0-9]正则表达式只获取字母和数字 稍后,使用array_unique过滤掉重复的匹配

$postbody = 'Hello World #Hello #World #Hello-World #Hello_World #Test-Tag';

preg_match_all('/#([a-zA-Z0-9]+)/', $postbody, $matches);
if(!empty($matches)){
   $tags = implode(',', array_unique($matches[1]));
   var_dump($tags);
}

输出:string(16) "Hello,World,Test"