$preg){ $item=str_replace("{".$patternname."}",$preg[0][0],$item); } return $item; } function codesection($q){ if(strstr($q,"") && strstr($q,"")){ $ex=explode("",$q); for($i=1;$i<=count($ex)-1;$i++){ $sp=explode("",$ex[$i]); $code=$sp[0]; $q=str_replace("$code","".base64_encode($code)."",$q); } } $q=htmlentities($q); $q=addslashes($q); $q=str_replace("<c>","",$q); $q=str_replace("</c>","",$q); return $q; } function highlights($str){ $str=" $str "; $str=preg_replace("/ http([^ ]{1,1000}) /si"," http$1",$str); return $str; } function displaycode($str){ if(strstr($str,"") && strstr($str,"")){ $ex=explode("",$str); for($i=1;$i<=count($ex)-1;$i++){ $sp=explode("",$ex[$i]); $code=$sp[0]; $code2="

"; $str=str_replace("$code",$code2,$str); } } $str=highlights($str); return $str; } function displaymemitem($qpattern,$ar){ foreach($ar as $index => $var){ $qpattern=str_replace("{".$index."}",$var,$qpattern); } return $qpattern; } function memquery($qpattern,$ar){ foreach($ar as $index => $var){ $qpattern=str_replace("{".$index."}",$var,$qpattern); } return urlencode($qpattern); } function leftis($str,$is){ if(substr($str,0,strlen($is)) == $is){ return true; } } function isquestion($q){ $q=strtolower($q); if(leftis($q,"what") || leftis($q,"how") || leftis($q,"why") || leftis($q,"do ")){ return true; } } function textquery($qdisplay,$ar){ $text=$qdisplay." "; foreach($ar as $var){ $text.="$var "; } return $text; } function searchpoint($in,$what){ $ex=explode(" ",$what); $c=0; foreach($ex as $var){ if(stristr($in,$var)){ $c++; } } return $c; } function bolditems($item,$ar){ if(!is_array($ar)){ $ar=explode(" ",$ar); } foreach($ar as $var){ $item=str_replace($var,"$var",$item); } return $item; } function searchmemitems($mem,$search){ $points=array(); foreach($mem as $qpattern => $items){ foreach($items as $ar){ $qdisplay=displaymemitem($qpattern,$ar); $textquery=textquery($qdisplay,$ar); $query=memquery($qpattern,$ar); $qdisplay=bolditems($qdisplay,$search); $itemdisplay="$qdisplay
"; $point=searchpoint($textquery,$search); if($point>=1){ $points[$itemdisplay]=$point; } } } arsort($points); $ret=""; foreach($points as $itemdisplay => $point){ $ret.= $itemdisplay; } return $ret; } function ispreg($q,$pattern){ //$q=custompatterns($q); $pattern="/".preg_replace("/\{([0-9]{1,2})\}/si","([^ß]{1,60000})",$pattern)."/si"; if(preg_match($pattern,$q)){ preg_match_all($pattern,$q,$m); $ret=array(); for($i=1;$i<=count($m)-1;$i++){ $ret[$i]=$m[$i][0]; } return $ret; } } function mem($name){ @mkdir("mem"); if(is_file("mem/$name.txt")){ return unserialize(file_get_contents("mem/$name.txt")); }else{ return array(); } } function savemem($name,$array){ @mkdir("mem"); file_put_contents("mem/$name.txt",serialize($array)); } function forgetmem($name){ @mkdir("mem"); file_put_contents("mem/".$name."_backup.txt",file_get_contents("mem/$name.txt")); unlink("mem/$name.txt"); } function remembermem($name){ @mkdir("mem"); file_put_contents("mem/$name.txt",file_get_contents("mem/".$name."_backup.txt")); } function autobackupmem($name){ @mkdir("mem"); $backupname=date("Ymd"); if(is_file("mem/$name.txt")){ file_put_contents($name."_backup.$backupname.txt",file_get_contents("mem/$name.txt")); } } function answer($qmem,$qar,$apattern){ $answers=""; foreach($qmem as $mindex => $memar){ $max=count($qar); $c=0; $a=$apattern; foreach($qar as $qindex => $word){ if($word == $memar[$qindex]){ $c++; } } if($c>=$max){ foreach($memar as $aindex => $aword){ $a=str_replace("{".$aindex."}",$aword,$a); } $a=displaycode($a); //$a=displaycustompatternitem($a); $answers.= "$a
"; } } return $answers; } autobackupmem("mem"); autobackupmem("patternmem"); autobackupmem("info"); if($q == "func:====" || $q == "func"){ print 'funcdef:function($i){return is_numeric($i);}====function($i){return "$i";}||||1'; }elseif($q == "func:name" || $q == "funcname"){ print 'funcdef:funcname=function($i){return "$i";}||||1'; }elseif(leftis($q,"funcdef:")){ $funcdef=substr($q,strlen("funcdef:")); if(strstr($funcdef,"||||")){ $ex=explode("||||",$funcdef); $example=$ex[1]; $funcdef=substr($funcdef,0,-strlen($example)-4); } if(strstr($funcdef,"====")){ print "mod1
"; $ex=explode("====",$funcdef); $filter=$ex[0];$mod=$ex[1]; $filterstr=$filter;$modstr=$mod; eval('$filter='.$filter.';'); eval('$mod='.$mod.';'); print "result for filter:". $filter($example)."
"; print "result for mod:".$mod($example)."
"; print "I understood the filter=>mod function pairs"; }else{ print "mod2
"; $ex=explode("=",$funcdef); $name=$ex[0]; $mod=substr($funcdef,strlen($name)+1); $filter=$name; $filterstr=$filter;$modstr=$mod; //$filter='function($q){return $q == "'.$name.';"};'; eval('$mod='.$mod.';'); print "result for mod:".$mod($example)."
"; print "I understood the function called $name"; } $funcmem=mem("func"); $funcmem[$filterstr]=$modstr; savemem("func",$funcmem); }elseif(leftis($q,"func ")){ $q=substr($q,strlen("func ")); $funcmem=mem("func"); foreach($funcmem as $filter => $mod){ if($filter && $mod && strstr($filter,"function(")){ eval('$filter='.$filter.';'); eval('$mod='.$mod.';'); $r=$filter($q); if($r){ print "".highlights($mod($q)).""; } } } }elseif(leftis($q,"func:")){ $q=substr($q,strlen("func:")); $ex=explode(" ",$q); $fn=$ex[0]; $i=substr($q,strlen($fn)+1); $funcmem=mem("func"); $func=$funcmem[$fn]; eval('$func='.$func.';'); print "".highlights($func($i)).""; }elseif(strstr($q,"FORGETMEM=")){ $memname=str_replace("FORGETMEM=","",$q); forgetmem($memname); print "I forgot everything about $memname now"; }elseif(strstr($q,"REMEMBERMEM=")){ $memname=str_replace("REMEMBERMEM=","",$q); remembermem($memname); print "I remember everything now about $memname"; }elseif(strstr($q,"quickinfo:")){ $ex=explode("=",$q); $what=str_replace("quickinfo:","",$ex[0]); $eq=$ex[1]; $infomem=mem("info"); $infomem[$what]=$eq; savemem("info",$infomem); print "I have saved the quick info"; }elseif(strstr($q,"::")){ $ex=explode("::",$q); $pattern1=$ex[0]; $pattern2=$ex[1]; $pattermemory=mem("patternmem"); $pattermemory[$pattern1]=$pattern2; savemem("patternmem",$pattermemory); print "alright, I understood the pattern"; }else{ $pattermemory=mem("patternmem"); $mfound=false; if(!isquestion($q)){ foreach($pattermemory as $qq => $a){ $m=ispreg($q,$a); if($m){ $mem=mem("mem"); $mem[$qq][]=$m; savemem("mem",$mem); $mfound=true; print "gotcha"; } } } $afound=false; foreach($pattermemory as $qq => $a){ $m=ispreg($q,$qq); if($m){ $mem=mem("mem"); $answer=answer($mem[$qq],$m,$a); print $answer; if($answer){$afound=true;} } } if(!$mfound && !$afound){ $quickinfo=mem("info"); $info=$quickinfo[$q]; if($info){ print displaycode($info); }else{ $mainmem=mem("mem"); $items=searchmemitems($mainmem,$q); if(!$items){ print "I don't know what you mean"; }else{ print $items; } } } } ?>