a dir la verità non so neanche come funziona però ho avuto l'ispirazione

codice:
		function get_trim_subdomain( $url ) {	
		
			static $ex=array('com','net','edu','org','info','us','biz','uk','to','ch','fr','jp','de','ru','it','mil','gov','au','cc','ca','coop','dk','be','at','as','az','bt','cn','ac','af','al','am','cx','cz','dz','ec','ee','eg','es','fo','ga','gf','gl','gr','gs','hk','il','in','io','is','kr','kz','li','lu','ly','mc','mm','ms','mx','nl','no','nu','nz','pl','pt','ro','se','sg','sh','sk','so','st','tc','tf','th','tj','tm');
		
			$url = substr($url,strpos($url,'://')+3);
			if ( ( $final_pos = strpos( $url , '/' ) ) === FALSE )
				$final_pos = strlen( $url );
				
 			$url = substr($url,0,$final_pos);
			$level = substr_count($url,'.');
			
			if ($level > 1 ) {
				$levelname=explode('.',$url);
				foreach( $levelname as $k=>$v ) {	
					if ( !in_array($v,$ex) ) {
						if ( $level > 2 ) {
							unset($levelname[$k]);
							$level-=1;
						}
					}
				}
				$url=implode('.',$levelname);
			}
		
			return $url;
		}