Przy okazji ostatniego projektu natknąłem się na problem zmiany linków w tweetach pobieranych z API Twittera. Jak wiadomo API zwraca tweety w plain text, czyli bez żadnych znaczników HTML.

Z pomocą przychodzą wyrażenia regularne zawarte w funkcji twitterify(), którą znalazłem w czeluściach internetu. Niestety do rzeczywistego autora funkcji nie udało mi się dokopać.

Funkcja czterokrotnie przepuszcza podany ciąg znaków przez preg_replace(), który szuka w tekście ciągu o podanym schemacie (wyrażenie regularne) i zamienia ten ciąg na inny.

Z twitterify() zmienimy:

  • wszystkie linki na klikalne odnośniki
  • ciągi zaczynające się od @ na linki do profilu
  • ciągi zaczynające się od # na linki do wyszukiwania po hashtagu

 

A oto wspomniana funkcja.

function twitterify( $ret ) {
   $ret = preg_replace( "#(^|[\n ])([\w]+?://[\w]+[^ \"\n\r\t< ]*)#", "\\1<a href=\"\\2\" target=\"_blank\">\\2</a>", $ret );
   $ret = preg_replace( "#(^|[\n ])((www|ftp)\.[^ \"\t\n\r< ]*)#", "\\1<a href=\"http://\\2\" target=\"_blank\">\\2</a>", $ret );
   $ret = preg_replace( "/@(\w+)/", "<a href=\"http://www.twitter.com/\\1\" target=\"_blank\">@\\1</a>", $ret );
   $ret = preg_replace( "/#(\w+)/", "<a href=\"http://search.twitter.com/search?q=\\1\" target=\"_blank\">#\\1</a>", $ret );
   return $ret;
}

Opublikowany przez Kuba Mikita

Miłośnik minimalizmu i prostoty, bo nie potrafi stworzyć niczego ładnego. Ma kołdrę, na której wypisane są funkcje WordPressa.