У меня проблема с извлечением только букв 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?
Используйте свойство unicode:
preg_match_all('/#(\p{L}+)/u', $string, $matches);
\p{L}
обозначает любую букву на любом языке.
Других решений пока нет …