<?
function getEntity($url)
{
	$m = preg_match_all("/^https?:\/\/([^\/]+\.)?([a-z0-9\-_]+?)\.(co|org|net|com|gov|name|arpa|mil|edu|biz|mobi|aero|asia|cat|coop|info|int|jobs|museum|pro|tel|travel|xxx|[a-z][a-z]|(co|edu|gov|net|org|com)\.[a-z][a-z])(\/|$)/i", $url, $matches);
	if (!$m || $m == 0) {
		return '';
	}
	return $matches[2];
}

function getRefKeyword($ref)
{
	$referrer = urldecode($ref);
	$entity = getEntity($referrer);
	$refDomain = $entity[0];

	$keyword = "";
	switch($refDomain) {
		case 'google':
			$m = preg_match_all("/^https?:\/\/.*\.google\.[a-z\.]+\/url\?(.+&)url=([^&]*).*$/", $referrer, $matches);
			if ($m && $m > 0) {
				$keyword = $matches[2][0];
				$keyword = str_replace("%20", " ", $keyword);
				return 'googleSearchTerm'; // can't find search term
			}
			$m = preg_match_all("/^https?:\/\/.*\.google\.[a-z\.]+\/.*#(.+&)q=([^&]*).*$/", $referrer, $matches);
			if ($m && $m > 0) {
				$keyword = $matches[2][0];
				$keyword = str_replace("%20", " ", $keyword);
				return $keyword;
			}
			$m = preg_match_all("/^https?:\/\/.*\.google\.[a-z\.]+\/search\?(.+&)?q=([^&]*).*$/", $referrer, $matches);
			if ($m && $m > 0) {
				$keyword = $matches[2][0];
				$keyword = str_replace("%20", " ", $keyword);
				return $keyword;
			}
			break;

		case 'bing':
			$m = preg_match_all("/^https?:\/\/.*\.bing\.[a-z\.]+\/search\?(.+&)?q=([^&]*).*$/", $referrer, $matches);
			if ($m && $m > 0) {
				$keyword = $matches[2][0];
				$keyword = str_replace("%20", " ", $keyword);
				return $keyword;
			}
			break;

		case 'yahoo':
			$m = preg_match_all("/^https?:\/\/.*\.yahoo\.[a-z\.]+\/(.*\/)?search(;.*)\?(.+&)?p=([^&]*).*$/", $referrer, $matches);
			if ($m && $m > 0) {
				$keyword = $matches[4][0];
				$keyword = str_replace("%20", " ", $keyword);
				return $keyword;
			}
			break;
	}

	return '';
}
?>