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
PHP Formatera telefonnummer
Skapa ett Netflixprogram
Expandera korta URLar
Parsea hashtaggar
Repeterande schema i iCal med AppleScript
Vlj datumspann med jQuery
Rkna ungefrlig tid med PHP
Nyckelord: php, hashtags, twitter eller textparsing
Triggrse
Splittrad tillvaro p webben del 2
Parsea hashtaggar
OAuth fungerar inte
Hur nya iPaden stller till det p webben
Microbloggning och bloggning kan det fungera tillsammans
Layoutmotor fr Atlas
Två månader med Keto
Spelbord v3
Mechanical Age map
More shading and water
Första månaden med Keto
Keto
Fotosession: Tabitha
Utebelysning
Återvinningsskåp
Måla om huset
Byggt hylla till vintunnorna
Dodge RAM
Inline-redigering
Drömmen om ett spa
Dags för carport
Survey Island, what is happening?
Golvprov
Gillestugan uppdaterad!
Spelbord v2
Tre billyhyllor blir två
Gymkort
You can't take the sky from me
Högtalare klara!
eklundh.com tar ned skylten
Högtalare bestämda!
Uppgraderingar biorum
Lord of the Rings-maraton
Ergonomiskt som tusan!
Lego Storm Trooper
Fågel Fenix
Två hyllor på badrummet
Hobbyhörna fixad
Hylla bakom soffan
Modellbygge igen!
Porträtt av u/Flattie-Ratty
Porträtt av u/DangDoood
Buy prints of my maps
Hero Dashboard för Descent
3D-printer
Fältsjukhus 616
Ny kaffemaskin
Porträtt av u/elizabeeeef
Jämförelse 135 mm
Nya objektiv
Porträtt av kompis mamma
Använda utrymmet under trappen
Spelbord
Pimpning av köks-ön
Jag saknar min Dodge!
Acrylic drip