<?php
// gethint.php
// Largely based on https://www.w3schools.com/xml/ajax_php.asp 
// With /usr/share/dict/propernames intervention
// RJM Programming
// November, 2022

// Array with names
$a[] = "Anna";
$a[] = "Brittany";
$a[] = "Cinderella";
$a[] = "Diana";
$a[] = "Eva";
$a[] = "Fiona";
$a[] = "Gunda";
$a[] = "Hege";
$a[] = "Inga";
$a[] = "Johanna";
$a[] = "Kitty";
$a[] = "Linda";
$a[] = "Nina";
$a[] = "Ophelia";
$a[] = "Petunia";
$a[] = "Amanda";
$a[] = "Raquel";
$a[] = "Cindy";
$a[] = "Doris";
$a[] = "Eve";
$a[] = "Evita";
$a[] = "Sunniva";
$a[] = "Tove";
$a[] = "Unni";
$a[] = "Violet";
$a[] = "Liza";
$a[] = "Elizabeth";
$a[] = "Ellen";
$a[] = "Wenche";
$a[] = "Vicky";

$c=[];
$mmb="";
$xmmb="";

if (isset($_GET['capitals'])) {
$a=[];
$c=[];
$cont=file_get_contents('http://en.wikipedia.org/wiki/List_of_national_capitals');
$tableih=explode("<tbody", explode("</table>", $cont)[1])[1];
//file_put_contents('za.za','is ' . '<td><a href="/wiki/ in ' . $tableih);
$capitals=explode('<td><a href="/wiki/', $tableih);
for ($ii=1; $ii<sizeof($capitals); $ii++) {
  if (strpos($capitals[$ii], '<a href="/wiki/') !== false) {
  array_push($a, str_replace('+',' ',urldecode(explode('"', $capitals[$ii])[0])) . ' (' . str_replace('+',' ',urldecode(explode('"', explode('<a href="/wiki/', $capitals[$ii])[1])[0])) . ')');
  if (substr(urldecode($_REQUEST["q"]),0,1) == "/") {
    $mmb.=str_replace('+',' ',str_replace('_',' ',urldecode(explode('"', $capitals[$ii])[0]))) . "
";
  }
  }
}
//sort($a);
} else if (isset($_GET['hobbies'])) {
$a=[];
$c=[];
$cont=file_get_contents('http://en.wikipedia.org/wiki/List_of_hobbies');
$hobbies=explode('<li><a href="/wiki/', $cont);
for ($ii=1; $ii<sizeof($hobbies); $ii++) {
  array_push($a, str_replace('+',' ',str_replace('_',' ',urldecode(explode('"', $hobbies[$ii])[0]))));
  if (substr(urldecode($_REQUEST["q"]),0,1) == "/") {
    $mmb.=str_replace('+',' ',str_replace('_',' ',urldecode(explode('"', $hobbies[$ii])[0]))) . "
";
  }
}
sort($a);
} else if (isset($_GET['fruits'])) {
$a=[];
$c=[];
$cont=file_get_contents('http://simple.wikipedia.org/wiki/List_of_fruits');
$fruits=explode('<li><a href="/wiki/', $cont);
for ($ii=1; $ii<sizeof($fruits); $ii++) {
  array_push($a, str_replace('+',' ',str_replace('_',' ',urldecode(explode('"', $fruits[$ii])[0]))));
  if (substr(urldecode($_REQUEST["q"]),0,1) == "/") {
    $mmb.=str_replace('+',' ',str_replace('_',' ',urldecode(explode('"', $fruits[$ii])[0]))) . "
";
  }
}
sort($a);
} else if (isset($_GET['vegetables'])) {
$a=[];
$c=[];
$cont=file_get_contents('http://simple.wikipedia.org/wiki/List_of_vegetables');
$vegetables=explode('<li><a href="/wiki/', $cont);
for ($ii=1; $ii<sizeof($vegetables); $ii++) {
  array_push($a, str_replace('+',' ',str_replace('_',' ',urldecode(explode('"', $vegetables[$ii])[0]))));
  if (substr(urldecode($_REQUEST["q"]),0,1) == "/") {
    $mmb.=str_replace('+',' ',str_replace('_',' ',urldecode(explode('"', $vegetables[$ii])[0]))) . "
";
  }
}
sort($a);
} else if (isset($_GET['RegEx'])) {
// With /usr/share/dict/propernames intervention ...
$a=[];
$c=[];
$myq="~";
if (substr(urldecode($_REQUEST["q"]),0,1) != "/") {
$myq=substr(urldecode($_REQUEST["q"]),0,1);
exec("grep -i '^" . strtolower(urldecode($_REQUEST["q"])) . "' /usr/share/dict/words > /tmp/mywlist.txt");
} else {
exec("grep -i '" . explode('/', urldecode($_REQUEST["q"]))[1] . "' /usr/share/dict/words > /tmp/mywlist.txt");
//unlink("/tmp/mywlist.txt");
}
if (file_exists("/tmp/mywlist.txt")) {
$moren=explode("\n", file_get_contents('/tmp/mywlist.txt'));
unlink("/tmp/mywlist.txt");
} else {
$moren=explode("\n", file_get_contents('/usr/share/dict/words'));
}
for ($ii=0; $ii<sizeof($moren); $ii++) {
   if (strtolower(substr($moren[$ii],0,1)) > strtolower(substr($myq,0,1))) { break; }
   if (!in_array($moren[$ii], $a) && ($myq == "~" || strtolower(substr($myq,0,1)) == strtolower(substr($moren[$ii],0,1)))) { array_push($a, $moren[$ii]); }
}
sort($a);
// ... end of /usr/share/dict/propernames intervention
} else if (strpos(('' . $_SERVER['QUERY_STRING']), '&') === false) {
// With /usr/share/dict/propernames intervention ...
$moren=explode("\n", file_get_contents('/usr/share/dict/propernames'));
for ($ii=0; $ii<sizeof($moren); $ii++) {
   if (!in_array($moren[$ii], $a)) { 
     array_push($a, $moren[$ii]); 
     if (substr(urldecode($_REQUEST["q"]),0,1) == "/") {
       $mmb.=$moren[$ii] . "\n";
     }
   }
}
sort($a);
// ... end of /usr/share/dict/propernames intervention
} else {
$concept=explode('=', explode('&', str_replace('&delim=','#delim=',('' . $_SERVER['QUERY_STRING'])))[1])[0];
$url='HTTP:' . str_replace('http:','',str_replace('https:','',str_replace('+',' ',urldecode(explode('#', explode('&', explode('=', explode('&', ('' . $_SERVER['QUERY_STRING']))[1])[1])[0])[0]))) );
$delimidea='<li><a href="/wiki/';
$minidelim='"';
$spacesub='_';
$plusbit='';
if (isset($_GET['delim'])) {
$delimidea=str_replace('+',' ',urldecode($_GET['delim']));
if (strpos(str_replace(' ','',strtolower($delimidea)), " href='") !== false) {
$minidelim="'";
} else if (strpos(str_replace(' ','',strtolower($delimidea)), ' href="') === false && strpos(str_replace(' ','',strtolower($delimidea)), ' href=') !== false) {
$minidelim=" ";
}
}
if (strpos(strtolower($url), 'wikipedia.') === false) {
$spacesub="%20";
} 
if (strpos($delimidea, (' href=' . trim($minidelim))) !== false) {
  $plusbit=trim(explode((' href=' . trim($minidelim)), $delimidea)[1]);
  if (substr(($plusbit . '  '),0,2) != '//' && substr(($plusbit . '  '),0,1) == '/') {
  if (strpos($url, $plusbit) !== false) { $upre=explode($plusbit, $url)[0] . $plusbit;  $plusbit=$upre;  }
  } else if (substr(($plusbit . '  '),0,2) != '..' && substr(($plusbit . '  '),0,1) == '.') {
  if (strpos($url, $plusbit) !== false) { 
    $upre=explode($plusbit, $url)[0];  $plusbit=$upre . $plusbit;  
  } else if (strpos($url, substr($plusbit,1)) !== false) { 
    $upre=explode(substr($plusbit,1), $url)[0];  $plusbit=$upre . substr($plusbit,1);  
  }
  } else if (substr(($plusbit . '  '),0,2) == '..') {
  if (strpos($url, $plusbit) !== false) { 
    $upre=explode($plusbit, $url)[0];  $plusbit=$upre . $plusbit;  
  } else if (strpos($url, substr($plusbit,2)) !== false) { 
    $upre=explode(substr($plusbit,2), $url)[0];  $plusbit=$upre . substr($plusbit,2);  
  }
  } else if (substr(($plusbit . '  '),0,2) == '//') {
  $plusbit='http:' . $plusbit;
  } else if (strtolower(substr(($plusbit . '          '),0,5)) == 'http:') {
  $plusbit='http:' . substr($plusbit,5);
  } else if (strtolower(substr(($plusbit . '          '),0,6)) == 'https:') {
  $plusbit='http:' . substr($plusbit,6);
  } else if (substr(($plusbit . '    '),0,4) == 'www.') {
  $plusbit='http://' . $plusbit;
  }
  $plusbit=str_replace("(", "%28", str_replace(")", "%29", $plusbit));
}
$a=[];
$c=[];
$origplusbit=$plusbit;
$cont=file_get_contents($url);
$things=explode($delimidea, $cont);
for ($ii=1; $ii<sizeof($things); $ii++) {
  if (trim($things[$ii]) != "") {
  $plusbit=$origplusbit;
  if ($plusbit !== '') {
    $plusbit=' ' . str_replace(' ','_','(' . str_replace("(", "%28", str_replace(")", "%29", $origplusbit . explode('>', explode($minidelim, $things[$ii])[0])[0])) . ')');
  }
  //if (strpos($things[$ii],"waterways") !== false) {
  //  file_put_contents('x.x', $things[$ii] . "\n" . str_replace('List of ','',str_replace('Lists of ','',explode('#', explode('&', explode('?', explode("/", str_replace('+',' ',str_replace($spacesub,' ',urldecode(explode('>', explode($minidelim, $things[$ii])[0])[0]))))[-1 + sizeof(explode("/", str_replace('+',' ',str_replace($spacesub,' ',urldecode(explode('>', explode($minidelim, $things[$ii])[0])[0])))))])[0])[0])[0])) . $plusbit);
  //}
  array_push($a, str_replace('List of ','',str_replace('Lists of ','',explode('#', explode('&', explode('?', explode("/", str_replace('+',' ',str_replace($spacesub,' ',urldecode(explode('>', explode($minidelim, $things[$ii])[0])[0]))))[-1 + sizeof(explode("/", str_replace('+',' ',str_replace($spacesub,' ',urldecode(explode('>', explode($minidelim, $things[$ii])[0])[0])))))])[0])[0])[0])) . $plusbit);
     if (substr(urldecode($_REQUEST["q"]),0,1) == "/") {
       $mmb.=str_replace('List of ','',str_replace('Lists of ','',explode('#', explode('&', explode('?', explode("/", str_replace('+',' ',str_replace($spacesub,' ',urldecode(explode('>', explode($minidelim, $things[$ii])[0])[0]))))[-1 + sizeof(explode("/", str_replace('+',' ',str_replace($spacesub,' ',urldecode(explode('>', explode($minidelim, $things[$ii])[0])[0])))))])[0])[0])[0])) . "\n";
       if ($xmmb == "") { $xmmb="\n"; }
       $xmmb.=str_replace('List of ','',str_replace('Lists of ','',explode('#', explode('&', explode('?', explode("/", str_replace('+',' ',str_replace($spacesub,' ',urldecode(explode('>', explode($minidelim, $things[$ii])[0])[0]))))[-1 + sizeof(explode("/", str_replace('+',' ',str_replace($spacesub,' ',urldecode(explode('>', explode($minidelim, $things[$ii])[0])[0])))))])[0])[0])[0])) . $plusbit . "\n";
     }
  }
}
sort($a);
}

// get the q parameter from URL
$q = urldecode($_REQUEST["q"]);

$hint = "";

// lookup all hints from array if $q is different from ""
if ($q !== "") {
    if (substr($q,0,1) == "/") {
    if ($mmb != "") {
      file_put_contents("/tmp/mywlist2.txt", $mmb);
      exec("grep -i '" . explode('/', urldecode($_REQUEST["q"]))[1] . "' /tmp/mywlist2.txt > /tmp/mywlist.txt");
      unlink("/tmp/mywlist2.txt");
      $a=explode("\n", file_get_contents("/tmp/mywlist.txt"));
      $c=[];
      unlink("/tmp/mywlist.txt");
      $hint="";
      //file_put_contents('xxx.xxx', $xmmb);
    }
    $lastname="";
    foreach($a as $name) {
        if (trim($name) != "") { //preg_match($q, $name)) {
            if ($hint === "") {
                if ($xmmb != "") {
                if (strpos($xmmb, "\n" . $name . ' ') !== false) {
                $hint = str_replace(', ',',',str_replace(' (','(',$name) . ' ' . explode("\n", explode("\n" . $name . ' ', $xmmb)[1])[0]);
                } else if (strpos($xmmb, "\n" . $name) !== false) {
                $hint = str_replace(', ',',',str_replace(' (','(',$name) . explode("\n", explode("\n" . $name, $xmmb)[1])[0]);
                } else {
                $hint = str_replace(', ',',',$name);
                }
                } else {
                $hint = str_replace(', ',',',$name);
                }
            } else if ($name != $lastname) {
                if ($xmmb != "") {
                if (strpos($xmmb, "\n" . $name . ' ') !== false) {
                $hint .= ", " . str_replace(', ',',',str_replace(' (','(',$name) . ' ' . explode("\n", explode("\n" . $name . ' ', $xmmb)[1])[0]);
                } else if (strpos($xmmb, "\n" . $name) !== false) {
                $hint .= ", " . str_replace(', ',',',str_replace(' (','(',$name) . explode("\n", explode("\n" . $name, $xmmb)[1])[0]);
                } else {
                $hint .= ", " . str_replace(', ',',',$name);
                }
                } else {
                $hint .= ", " . str_replace(', ',',',$name);
                }
            }
        }
        $lastname=$name;
    }
    } else {
    $q = strtolower($q);
    $len=strlen($q);
    foreach($a as $name) {
        if (stristr($q, substr($name, 0, $len))) {
            if ($hint === "") {
                $hint = str_replace(', ',',',$name);
            } else if ($name != $lastname) {
                $hint .= ", " . str_replace(', ',',',$name);
            }
        }
        $lastname=$name;
    }
    }
}

// Output "no suggestion" if no hint was found or output correct values
echo $hint === "" ? "no suggestion" : $hint;
?>