function getHashTagsFromString($str){
$matches = array();
$hashTag=array();
if (preg_match_all('/#([^\s]+)/', $str, $matches)) {
for($i=0;$i<sizeof($matches[1]);$i++){
$hashtag[$i]=$matches[1][$i];
}
return $hashtag;
}
}
test string $str = "STR
this is a string
with a #tag and
another #hello #hello2 ##hello3 one
STR";
使用上面的函数我得到答案但是无法从## hello3中删除两个#标签如何使用单个正则表达式删除它
答案 0 :(得分:1)
更新您的正则表达式,如下所示:
/#+(\S+)/
<强>解释强>
/
- 开始分隔符
#+
- 与文字#
字符匹配一次或多次(\S+)
- 匹配(并捕获)任何非空格字符([^\s]
的简写)/
- 结束分隔符输出如下:
Array
(
[0] => tag
[1] => hello
[2] => hello2
[3] => hello3
)
答案 1 :(得分:0)
编辑:要匹配所有哈希标记,请使用:
preg_match_all('/#\S+/', $str, $match);
要删除,而不是preg_match_all
,您应该使用preg_replace
进行替换。
$repl = preg_replace('/#\S+/', '', $str);