Parsea hashtaggar
2012-11-18 - php, hashtags, twitter, textparsing
0
Hur skriver man den rubriken på svenska? Nåja, jag insåg att när jag donade lite med en importfunktion för Twitter så vore det bra med en funktion som tog en textsträng och parsade ut de hashtags (ord med # framför) och returnerade dem som hashtags, nyckelord samt textsträngen utan dem. Så här ser den funktionen ut, kanske någon annan som kan ha användning för den?
function parse_hashtags($string){         $return = array(                 "tags" => array(),                 "keywords" => array(),                 "original" => $string         );         $words = preg_split("/s+/", $string);         foreach ($words as $word){                 if (preg_match("/^#/", $word)){                         $return["string"][] = str_replace("#", "", $word);                         $word = preg_replace("/[^#a-z_åäö]/", "", $word);                         $return["tags"][] = $word;                         $return["keywords"][] = str_replace("#", "", $word);                 } else {                         $return["string"][] = $word;                 }         }         if (is_array($return["keywords"])){                 foreach (array_reverse($return["keywords"]) as $key){                         if ($return["string"][count($return["string"])-1] == $key){                                 unset($return["string"][count($return["string"])-1]);                         } else {                                 break;                         }                 }         }         $return["string"] = join(" ", (array)$return["string"]);         return $return; }
Så funktionen returnerar alltså en array med de olika delarna, här är output från ett exempel:
$string = "I like to swim in the #ocean, it's very nice! #clean #fun"; $keywords = parse_hashtags($string); print_r($keywords);
Array ( [tags] => Array ( [0] => #ocean [1] => #clean [2] => #fun ) [keywords] => Array ( [0] => ocean [1] => clean [2] => fun ) [original] => I like to swim in the #ocean, it's very nice! #clean #fun [string] => I like to swim in the ocean, it's very nice! )
Den är rätt så intelligent. Inte nog med att den returnerar både separata tags och keywords (med eller utan hashtecknet) så returnerar den både originalsträngen samt en uppstädad strängversion utan hashtags. Och den är så pass smart att den konverterar hashtags inne i meningen till ord men struntar i att ta med dem i slutet av meningen - notera ordet "ocean" som är en tag men är kvar i den uppstädade meningen medan tagsen "clean" och "fun" är borta. Så det blir helt enkelt en snygg förståelig mening av det hela.
Mer i Tutorials
Expandera korta URLar Skapa ett Netflixprogram PHP Formatera telefonnummer Parsea hashtaggar Repeterande schema i iCal med AppleScript VÃlj datumspann med jQuery RÃkna ungefÃrlig tid med PHP
Nyckelord: php, hashtags, twitter eller textparsing
Splittrad tillvaro pà webben del 2 Triggrse Parsea hashtaggar OAuth fungerar inte Hur nya iPaden stÃller till det pà webben Microbloggning och bloggning kan det fungera tillsammans Layoutmotor fÃr Atlas