多个哈希标签删除

时间:2014-02-15 10:22:36

标签: php regex

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中删除两个#标签如何使用单个正则表达式删除它

2 个答案:

答案 0 :(得分:1)

更新您的正则表达式,如下所示:

/#+(\S+)/

<强>解释

  • / - 开始分隔符
    • #+ - 与文字#字符匹配一次或多次
    • (\S+) - 匹配(并捕获)任何非空格字符([^\s]的简写)
  • / - 结束分隔符

Regex101 Demo

输出如下:

Array
(
    [0] => tag
    [1] => hello
    [2] => hello2
    [3] => hello3
)

Demo

答案 1 :(得分:0)

编辑:要匹配所有哈希标记,请使用:

preg_match_all('/#\S+/', $str, $match);

要删除,而不是preg_match_all,您应该使用preg_replace进行替换。

$repl = preg_replace('/#\S+/', '', $str);