$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;
}
}
}
}
?>