Получить все хэштеги из твита в функции PHP

Добавьте setuid (0) в скрипт и скомпилируйте его. Он должен работать после этого.

$ cat wrapper.c 
int main(void) 
{ 
        setuid(0);
        system("/bin/bash ./should_run_as_root.sh"); 
} 
$ gcc -o wrapper wrapper.c 
$ sudo chown root wrapper 
$ sudo chmod ug+s wrapper 
$ ll wrapper 
-rwsr-sr-x 1 root users 6667 2009-02-17 11:11 wrapper 
$ 
23
задан Community 23 May 2017 в 12:02
поделиться

3 ответа

$tweet = "this has a #hashtag a  #badhash-tag and a #goodhash_tag";

preg_match_all("/(#\w+)/", $tweet, $matches);

var_dump( $matches );

* Дефисы являются недопустимыми символами для хэштегов, знаки подчеркивания разрешены.

33
ответ дан 28 November 2019 в 22:14
поделиться

Попробуйте это регулярное выражение:

/#[^\s]*/i

Или используйте это, если есть несколько хэш-тегов, объединенных вместе (например, #foo#bar).

/#[^\s#]*/i

Запуск этого PHP будет выглядеть так:

preg_match_all('/#[^\s#]*/i', $tweet_string, $result);

Результатом будет массив, содержащий все хэштеги в твите (сохраняется как "$result" - третий аргумент).

Наконец, загляните на этот сайт. Я нашел его очень удобным для тестирования регулярных выражений. http://regex.larsolavtorvik.com/

EDIT: Я попробовал ваше регулярное выражение, и оно тоже отлично сработало!

EDIT 2: Добавлено еще одно регулярное выражение для извлечения хэш-тегов, даже если они идут подряд.

5
ответ дан 28 November 2019 в 22:14
поделиться

Используйте preg_match_all () функция:

function get_hashtags($tweet)
{
    $matches = array();
    preg_match_all('/#\S*\w/i', $tweet, $matches);
    return $matches[0];
}
4
ответ дан 28 November 2019 в 22:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: