How do I extract words starting with a hash tag (#) from a string into an array

末鹿安然 提交于 2019-11-28 10:17:15

this can be done by the /(?<!\w)#\w+/ regx it will work

That's what preg_match_all does. You always get a multidimensional array. [0] is the complete match and [1] the first capture groups result list.

Just access $matches[1] for the desired strings. (Your dump with the depicted extraneous Array ( [0] => Array ( [0] was incorrect. You get one subarray level.)

Alvaro

I think this function will help you:

echo get_hashtags($string);

function get_hashtags($string, $str = 1) {
    preg_match_all('/#(\w+)/',$string,$matches);
    $i = 0;
    if ($str) {
        foreach ($matches[1] as $match) {
            $count = count($matches[1]);
            $keywords .= "$match";
            $i++;
            if ($count > $i) $keywords .= ", ";
        }
    } else {
        foreach ($matches[1] as $match) {
            $keyword[] = $match;
        }
        $keywords = $keyword;
    }
    return $keywords;
}

Try:

$string = "this is #a string with #some sweet #hash tags";
preg_match_all('/(?<!\w)#\S+/', $string, $matches);
print_r($matches[0]);
echo("<br><br>");

// Output: Array ( [0] => #a [1] => #some [2] => #hash )
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!