我试图找到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
我希望它在到达一个不是字母或数字也不会打印重复的字符之前就停止。
答案 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"