Hashtag.php 920 B

12345678910111213141516171819202122232425262728293031323334353637
  1. <?php
  2. namespace App\Util\Lexer;
  3. class Hashtag
  4. {
  5. public static function getHashtags($status)
  6. {
  7. $hashtags = false;
  8. preg_match_all("/(?<!&)(#\w+)/u", $status, $matches);
  9. if ($matches) {
  10. $res = array_count_values($matches[0]);
  11. $hashtags = array_keys($res);
  12. }
  13. return $hashtags;
  14. }
  15. public static function replaceHashtagsWithLinks($status)
  16. {
  17. $hashtags = self::getHashtags($status);
  18. if (!$hashtags) {
  19. return false;
  20. }
  21. $rendered = $status;
  22. foreach ($hashtags as $hashtag) {
  23. $tag = substr($hashtag, 1);
  24. $link = config('routes.hashtag.search').$tag;
  25. $href = "<a href='{$link}' class='mention hashtag status-link' rel='noopener'>{$hashtag}</a>";
  26. $rendered = str_replace($hashtag, $href, $rendered);
  27. }
  28. return $rendered;
  29. }
  30. }