Извлеките все хэштеги из твита в функции PHP
Я хочу извлечь все хэштеги из твита с помощью функции PHP.
Я знаю, что кто-то задавал аналогичный вопрос здесь , но нет никакого намека на то, как именно это реализовать в PHP. Поскольку я не очень хорошо знаком с регулярными выражениями, не знаю, как написать функцию, которая возвращает массив всех хэштегов в твите.
Итак, как мне это сделать, используя следующее регулярное выражение:
#\S*\w
6 answers
$tweet = "this has a #hashtag a #badhash-tag and a #goodhash_tag";
preg_match_all("/(#\w+)/", $tweet, $matches);
var_dump( $matches );
*Тире являются незаконными символами для хэштегов, подчеркивания разрешены.
Я создал свое собственное решение. Это делает:
- Находит все хэштеги в строке
- Удаляет дубликаты
- Сортирует хэштеги относительно количества существования в тексте
-
Поддерживает символы юникода
function getHashtags($string) { $hashtags= FALSE; preg_match_all("/(#\w+)/u", $string, $matches); if ($matches) { $hashtagsArray = array_count_values($matches[0]); $hashtags = array_keys($hashtagsArray); } return $hashtags; }
Вывод выглядит следующим образом:
(
[0] => #_ƒOllOw_
[1] => #FF
[2] => #neslitükendi
[3] => #F_0_L_L_O_W_
[4] => #takipedeğerdost
[5] => #GönüldenTakipleşiyorum
)
Не забывайте о хэштегах, содержащих юникод, числовые значения и символы подчеркивания:
$tweet = "Valid hashtags include: #hashtag #NYC2016 #NYC_2016 #gøypålandet!";
preg_match_all('/#([\p{Pc}\p{N}\p{L}\p{Mn}]+)/u', $tweet, $matches);
print_r( $matches );
\p{Pc} - для соответствия подчеркиванию
\p{N} - числовой символ в любом сценарии
\p{L} - буква с любого языка
\p{Mn} - любое немаркированное пространство (акценты, умлауты и т.д.)
Используйте preg_match_all()
функция:
function get_hashtags($tweet)
{
$matches = array();
preg_match_all('/#\S*\w/i', $tweet, $matches);
return $matches[0];
}
Попробуйте это регулярное выражение:
/#[^\s]*/i
Запуск PHP будет выглядеть так:
preg_match_all('/#[^\s]*/i', $tweet_string, $result);
Результатом является массив, содержащий все хэштеги в твите (сохраненный как "$result" - третий аргумент).
Наконец, ознакомьтесь с этим сайтом. Я нашел это очень удобным для тестирования регулярных выражений. http://regex.larsolavtorvik.com/
РЕДАКТИРОВАТЬ: Я попробовал ваше регулярное выражение, и оно тоже отлично сработало!
Используйте пакет twitter-text-php
.