regex — Как получить хэштеги UTF-8 без специальных символов в переполнении стека

У меня проблема с извлечением только букв UTF-8, таких как ä,ö,ü,ß (скажем, буквы, которые используются в словах) без символов, таких как !"§$%&/()+' и т.п.

  function getHashtags($string)
{
$string = html_entity_decode($string, ENT_QUOTES, "utf-8");
preg_match_all('/(\#)([^\s]+)/u', $string, $matches);
if ($matches) {
$hashtagsArray = array_count_values($matches[0]);
$hashtags = array_keys($hashtagsArray);
$hashtagLine = '';
foreach ($hashtags as $hashs) {
$hashs = strtolower(trim($hashs));
$hashtagLine .= $hashs;
}
}
return $hashtagLine;
}

это мое текущее решение, он получает текст строки, извлекает из него хэштеги и возвращает их в строке. Проблема в том, что с этим решением также обрабатываются хэштеги, как #example!"$/% (и не режется перед ! лайк #example).

Есть ли у кого-то подход (Regex) для извлечения твиттера, такого как хэштеги UTF-8, без лишних знаков препинания из строки в PHP?

0

Решение

Используйте свойство unicode:

preg_match_all('/#(\p{L}+)/u', $string, $matches);

\p{L} обозначает любую букву на любом языке.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]