All pastes #618012 Raw Edit

Miscellany

public php v1 · immutable
·published 2007-07-13 17:50 UTC
rendered paste body
<?php$module->registerModule( 'GoogleDefine', 'start' ); class GoogleDefine { 	var $lang = 'pt_PT';	var $num = 1;	var $define = '';		function start() {		global $iBot;		if($iBot->args[0] == '!define') {			$word = $iBot->makeArgs( 1 );						$this->define( $word );		}	}	function define( $word = '' ) {		global $iBot;		if(empty( $word )) {			$iBot->msgChan( 'Usage: !define word' );			return;		} 		$this->define = $word; 		$this->num = empty( $this->num ) ? 1 : $this->num; 		$data = $this->getData(); 		if(empty( $data )) {			return false;		} 		$defined = $this->parse_data( $data ); 		if(!$defined) {			$msg  = 'Nenhuma definição encontrada para '. $this->define;			$iBot->msgChan( $msg );			return;		}		$exp = explode( '<font size=-1><li>', $defined );		$exp = explode( '<br>', $exp[1] );		$msg = $exp[0];		$exp = explode( '<font color=#008000>', $exp[1] );		$exp = explode( '</font></a></font>', $exp[1] );		$url = $exp[0];		$msg = $this->unhtmlentities( $msg ).' ( '. $url .' )';				$iBot->msgChan( $msg );	} 	function parse_data( $data ) {				$define = explode( '<ul type="disc">', $data );				if(!empty( $define[1] )) {			$define = explode( '</ul>', $define[1] );						preg_match_all( '/<a href="(.*?)">/', $define[0], $links );						foreach( $links[1] as $link ) {				$pattern[] = "/". preg_quote( $link, '/'  ) ."/";				$replace[] = "http://www.google.pt". $link;			}						$define = preg_replace( $pattern, $replace, $define[0] ); 			$define = explode( '<p></p>', $define ); 			$defined = ''; 			for($x = 0; $x < $this->num; $x++ ) {				if(count( $define ) >= $this->num) {					$defined .= $define[$x];				}			} 			if(empty( $defined )) {				foreach( $define as $value ) {					$defined .= $value;				}			} 			return $defined;		} 		return false;	}	function unhtmlentities ($string)	{		    $trans_tbl = get_html_translation_table (HTML_ENTITIES);		        $trans_tbl = array_flip ($trans_tbl);		        return strtr ($string, $trans_tbl);	}	function getData () { 		$fp = fsockopen( 'www.google.pt', 80, $errno, $errstr, 2 ); 		if(!$fp) {			die( "Não foi possivel conectar ao google $errno ($errstr)");		} 		$header = 'GET /search?q=define%3A'. urlencode( $this->define ) .'&hl=pt-PT&oi=definel&defl='. $this->lang ." HTTP/1.1\r\n";		$header .= "Host: www.google.pt\r\n";		$header .= "User-Agent: {$_SERVER['HTTP_USER_AGENT']}\r\n";		$header .= "Referer: http://www.google.pt/webhp?hl=pt-PT&btnG=Pesquisar\r\n";		$header .= "Connection: close\r\n\r\n"; 		fwrite( $fp, $header ); 		$data = ''; 		while(!feof( $fp )) {			$data .= fgets( $fp, 4000 );		} 		fclose( $fp ); 		return $data;	}}