<?php
// wiki_mark_eight.php
// Encase 8 letter or above words in <mark></mark>
// RJM Programming
// January, 2023

 error_reporting( E_ERROR | E_USER_ERROR );
 
 set_time_limit(3600);

 $letlen=8;
 $langis='en';
 $urlis='';
 $preminmax="";
 if (1 == 2) {
 $sih="<option id=langone value='en'>English (en)</option><option value='af'>Afrikaans</option><option value='sq'>Albanian</option><option value='am'>Amharic ✨</option><option value='ar'>Arabic</option><option value='hy'>Armenian</option><option value='az'>Azerbaijani</option><option value='eu'>Basque</option><option value='be'>Belarusian</option><option value='bn'>Bengali ✨</option><option value='bs'>Bosnian ✨</option><option value='bg'>Bulgarian</option><option value='ca'>Catalan</option><option value='ceb'>Cebuano ✨</option><option value='zh-CN'>Chinese (Simplified)</option><option value='zh-TW'>Chinese (Traditional)</option><option value='co'>Corsican ✨</option><option value='hr'>Croatian</option><option value='cs'>Czech</option><option value='da'>Danish</option><option value='nl'>Dutch</option><option value='en'>English</option><option value='eo'>Esperanto ✨</option><option value='et'>Estonian</option><option value='fi'>Finnish</option><option value='fr'>French</option><option value='fy'>Frisian ✨</option><option value='gl'>Galician</option><option value='ka'>Georgian</option><option value='de'>German</option><option value='el'>Greek</option><option value='gu'>Gujarati ✨</option><option value='ht'>Haitian Creole</option><option value='ha'>Hausa ✨</option><option value='haw'>Hawaiian ✨</option><option value='he'>Hebrew</option><option value='hi'>Hindi</option><option value='hmn'>Hmong ✨</option><option value='hu'>Hungarian</option><option value='is'>Icelandic</option><option value='ig'>Igbo ✨</option><option value='id'>Indonesian</option><option value='ga'>Irish</option><option value='it'>Italian</option><option value='ja'>Japanese</option><option value='jv'>Javanese ✨</option><option value='kn'>Kannada ✨</option><option value='kk'>Kazakh ✨</option><option value='km'>Khmer ✨</option><option value='rw'>Kinyarwanda ✨</option><option value='ko'>Korean</option><option value='ku'>Kurdish ✨</option><option value='ky'>Kyrgyz ✨</option><option value='lo'>Lao ✨</option><option value='lv'>Latvian</option><option value='lt'>Lithuanian</option><option value='lb'>Luxembourgish ✨</option><option value='mk'>Macedonian</option><option value='mg'>Malagasy ✨</option><option value='ms'>Malay</option><option value='ml'>Malayalam ✨</option><option value='mt'>Maltese</option><option value='mi'>Maori ✨</option><option value='mr'>Marathi ✨</option><option value='mn'>Mongolian ✨</option><option value='my'>Myanmar (Burmese) ✨</option><option value='ne'>Nepali ✨</option><option value='no'>Norwegian</option><option value='ny'>Nyanja (Chichewa) ✨</option><option value='or'>Odia (Oriya) ✨</option><option value='ps'>Pashto ✨</option><option value='fa'>Persian</option><option value='pl'>Polish</option><option value='pt'>Portuguese (Portugal, Brazil)</option><option value='pa'>Punjabi ✨</option><option value='ro'>Romanian</option><option value='ru'>Russian</option><option value='sm'>Samoan ✨</option><option value='gd'>Scots Gaelic ✨</option><option value='sr'>Serbian</option><option value='st'>Sesotho ✨</option><option value='sn'>Shona ✨</option><option value='sd'>Sindhi ✨</option><option value='si'>Sinhala (Sinhalese) ✨</option><option value='sk'>Slovak</option><option value='sl'>Slovenian</option><option value='so'>Somali ✨</option><option value='es'>Spanish</option><option value='su'>Sundanese ✨</option><option value='sw'>Swahili</option><option value='sv'>Swedish</option><option value='tl'>Tagalog (Filipino)</option><option value='tg'>Tajik ✨</option><option value='ta'>Tamil ✨</option><option value='tt'>Tatar ✨</option><option value='te'>Telugu ✨</option><option value='th'>Thai</option><option value='tr'>Turkish</option><option value='tk'>Turkmen ✨</option><option value='uk'>Ukrainian</option><option value='ur'>Urdu</option><option value='ug'>Uyghur ✨</option><option value='uz'>Uzbek ✨</option><option value='vi'>Vietnamese</option><option value='cy'>Welsh</option><option value='xh'>Xhosa ✨</option><option value='yi'>Yiddish</option><option value='yo'>Yoruba ✨</option><option value='zu'>Zulu ✨</option>";
 } else {
 $preminmax="data-";
 $sih='<option id="langone" value="en">English (en)</option><option value="af">Afrikaans</option><option value="als">Alemannisch</option><option value="am">አማርኛ</option><option value="ang">Ænglisc</option><option value="ar">العربية</option><option value="ast">Asturianu</option><option value="gn">Avañe' . "'" . 'ẽ</option><option value="az">Azərbaycanca</option><option value="azb">تۆرکجه</option><option value="ban">Basa Bali</option><option value="bn">বাংলা</option><option value="zh-min-nan">Bân-lâm-gú</option><option value="ba">Башҡортса</option><option value="be">Беларуская</option><option value="be-tarask">Беларуская (тарашкевіца)</option><option value="bh">भोजपुरी</option><option value="bg">Български</option><option value="br">Brezhoneg</option><option value="ca">Català</option><option value="cv">Чӑвашла</option><option value="ceb">Cebuano</option><option value="cs">Čeština</option><option value="cy">Cymraeg</option><option value="da">Dansk</option><option value="ary">الدارجة</option><option value="de">Deutsch</option><option value="et">Eesti</option><option value="el">Ελληνικά</option><option value="es">Español</option><option value="eo">Esperanto</option><option value="eu">Euskara</option><option value="fa">فارسی</option><option value="hif">Fiji Hindi</option><option value="fo">Føroyskt</option><option value="fr">Français</option><option value="fy">Frysk</option><option value="ga">Gaeilge</option><option value="gd">Gàidhlig</option><option value="gl">Galego</option><option value="gu">ગુજરાતી</option><option value="hak">客家語/Hak-kâ-ngî</option><option value="ko">한국어</option><option value="ha">Hausa</option><option value="haw">Hawaiʻi</option><option value="hy">Հայերեն</option><option value="hi">हिन्दी</option><option value="hr">Hrvatski</option><option value="io">Ido</option><option value="id">Bahasa Indonesia</option><option value="ie">Interlingue</option><option value="os">Ирон</option><option value="is">Íslenska</option><option value="it">Italiano</option><option value="he">עברית</option><option value="jv">Jawa</option><option value="kn">ಕನ್ನಡ</option><option value="ka">ქართული</option><option value="kk">Қазақша</option><option value="sw">Kiswahili</option><option value="ku">Kurdî</option><option value="ky">Кыргызча</option><option value="lad">Ladino</option><option value="la">Latina</option><option value="lv">Latviešu</option><option value="lb">Lëtzebuergesch</option><option value="lt">Lietuvių</option><option value="lij">Ligure</option><option value="li">Limburgs</option><option value="lmo">Lombard</option><option value="hu">Magyar</option><option value="mk">Македонски</option><option value="mg">Malagasy</option><option value="ml">മലയാളം</option><option value="mi">Māori</option><option value="mr">मराठी</option><option value="xmf">მარგალური</option><option value="arz">مصرى</option><option value="ms">Bahasa Melayu</option><option value="cdo">閩東語 / Mìng-dĕ̤ng-ngṳ̄</option><option value="mn">Монгол</option><option value="my">မြန်မာဘာသာ</option><option value="nah">Nāhuatl</option><option value="na">Dorerin Naoero</option><option value="fj">Na Vosa Vakaviti</option><option value="nl">Nederlands</option><option value="ne">नेपाली</option><option value="ja">日本語</option><option value="ce">Нохчийн</option><option value="frr">Nordfriisk</option><option value="pih">Norfuk / Pitkern</option><option value="no">Norsk bokmål</option><option value="nn">Norsk nynorsk</option><option value="oc">Occitan</option><option value="uz">Oʻzbekcha/ўзбекча</option><option value="pa">ਪੰਜਾਬੀ</option><option value="pnb">پنجابی</option><option value="pap">Papiamentu</option><option value="ps">پښتو</option><option value="tpi">Tok Pisin</option><option value="pl">Polski</option><option value="pt">Português</option><option value="ro">Română</option><option value="qu">Runa Simi</option><option value="ru">Русский</option><option value="sah">Саха тыла</option><option value="sm">Gagana Samoa</option><option value="sa">संस्कृतम्</option><option value="sc">Sardu</option><option value="sco">Scots</option><option value="stq">Seeltersk</option><option value="scn">Sicilianu</option><option value="si">සිංහල</option><option value="simple">Simple English</option><option value="sd">سنڌي</option><option value="sk">Slovenčina</option><option value="sl">Slovenščina</option><option value="szl">Ślůnski</option><option value="so">Soomaaliga</option><option value="ckb">کوردی</option><option value="sr">Српски / srpski</option><option value="sh">Srpskohrvatski / српскохрватски</option><option value="fi">Suomi</option><option value="sv">Svenska</option><option value="tl">Tagalog</option><option value="ta">தமிழ்</option><option value="kab">Taqbaylit</option><option value="tt">Татарча/tatarça</option><option value="th">ไทย</option><option value="tg">Тоҷикӣ</option><option value="to">Lea faka-Tonga</option><option value="tr">Türkçe</option><option value="tw">Twi</option><option value="uk">Українська</option><option value="ur">اردو</option><option value="vep">Vepsän kel’</option><option value="vi">Tiếng Việt</option><option value="vo">Volapük</option><option value="war">Winaray</option><option value="wuu">吴语</option><option value="zh-yue">粵語</option><option value="diq">Zazaki</option><option value="bat-smg">Žemaitėška</option><option value="zh">中文</option>';
 }

 function relative_to_absolute($inth) {
    global $urlis, $letlen;
    $froms=[];
    $sfroms=" ";
    $ub="http://" . $_SERVER['SERVER_NAME'] . ":" . $_SERVER['SERVER_PORT'] . $_SERVER['REQUEST_URI'];
    if ($urlis != "") {
      $ubf=explode("?", $urlis);
      $ubff=explode("/", $ubf[0]);
      if (strpos($ubff[sizeof($ubff) - 1], ".") !== false && (sizeof($ubff) - 1) > 2) {
       $ub=str_replace("/" . $ubff[sizeof($ubff) - 1], "/", $ubf[0]);
     } else {
       $ub=str_replace("@$@", "", str_replace("/@$@", "/", ($ubf[0] . "@$@")));
      }
      $urlis="";
    }
    $ubf=explode("?", $ub);
    $udirname=str_replace("/wiki_" . "mark_eight.php", "/", $ubf[0]);
    //echo $udirname;
    //exit;
    //$low = strtolower($inth);
    $outth = $inth;
    $ideas = array(" action='", ' action="', " Action='", ' Action="', " ACTION='", ' ACTION="', " action=", " Action=", " ACTION=", " href='", ' href="', " Href='", ' Href="', " HREF='", ' HREF="', " href=", " Href=", " HREF=", " src='", ' src="', " Src='", ' Src="', " SRC='", ' SRC="', " src=", " Src=", " SRC=");
    if ($udirname != "") {
     $inth=str_replace("'/static/", "'" . explode("/wiki/", $udirname)[0] . "/static/", $inth);
     $inth=str_replace('"/static/', '"' . explode("/wiki/", $udirname)[0] . "/static/", $inth);
     $inth=str_replace("'/wiki/", "'" . explode("/wiki/", $udirname)[0] . "/wiki/", $inth);
     $inth=str_replace('"/wiki/', '"' . explode("/wiki/", $udirname)[0] . "/wiki/", $inth);
     $inth=str_replace("'/w/", "'" . explode("/wiki/", $udirname)[0] . "/w/", $inth);
     $inth=str_replace('"/w/', '"' . explode("/wiki/", $udirname)[0] . "/w/", $inth);
     $inth=str_replace("'/er/", "'" . explode("/wiki/", $udirname)[0] . "/er/", $inth);
     $inth=str_replace('"/er/', '"' . explode("/wiki/", $udirname)[0] . "/er/", $inth);
     $inth=str_replace("'/esitest-", "'" . explode("/wiki/", $udirname)[0] . "/esitest-", $inth);
     $inth=str_replace('"/esitest-', '"' . explode("/wiki/", $udirname)[0] . "/esitest-", $inth);
     $outth = $inth;
     for ($m=0; $m<sizeof($ideas); $m++) {
      $huhs = explode($ideas[$m], $inth);
      if (sizeof($huhs) > 1) {
        for ($ii=(sizeof($huhs) - 1); $ii>=1; $ii--) {
          if (strtolower(str_replace("file", "http", strtolower(substr($huhs[$ii], 0, 4)))) == "http") {
            $outth = $outth;
          } else if (substr($huhs[$ii], 0, 1) != "/" && substr($huhs[$ii], 0, 1) != "'" && substr($huhs[$ii], 0, 1) != '"') {
            $outth = str_replace($huhs[$ii], $udirname . $huhs[$ii], $outth);
          } else if (substr($huhs[$ii], 1, 1) != "/" && substr($huhs[$ii], 0, 1) != "'" && substr($huhs[$ii], 0, 1) != '"') {
            $outth = str_replace($huhs[$ii], substr($udirname, 0, (strlen($udirname) - 0)) . $huhs[$ii], $outth);
          }
        }
      }
     }
    }
    
    $fixthis=$outth;
    if (strpos(explode("<body", $outth)[1], "</footer>") !== false) {
    $fixthis=explode("</footer>", explode("<body", $outth)[1])[0];
    $cerrs=explode(">", explode("</footer>", explode("<body", $outth)[1])[0]);
    } else {
    $fixthis=explode("<body", $outth)[1];
    $cerrs=explode(">", explode("<body", $outth)[1]);
    }
    for ($jj=1; $jj<sizeof($cerrs); $jj++) {
    //$aerrs=explode(" ", $outth);
    $aerrs=explode(" ", explode('<', $cerrs[$jj])[0]);
    for ($ii=0; $ii<sizeof($aerrs); $ii++) {
      if (strlen($aerrs[$ii]) >= $letlen) {
        if (strpos($sfroms, ' ' . $aerrs[$ii] . ' ') === false) {
          $berrs=explode(' ' . $aerrs[$ii] . ' ', $outth);
          //$laste=explode(">", $berrs[0])[-1 + sizeof(explode(">", $berrs[0]))];
          //if (strpos($laste, "<") === false) {
            if (strpos($aerrs[$ii], '=') === false) {
            $sfroms.=$aerrs[$ii] . ' '; 
            }
          //}
        }
      }
    }
    }
    
    $froms=explode(" ", trim($sfroms));
    $prefixthis=$fixthis;
    for ($ii=0; $ii<sizeof($froms); $ii++) {
      $fixthis=str_replace(' ' . $froms[$ii] . '<', ' <mark>' . $froms[$ii] . '</mark><', str_replace('>' . $froms[$ii] . ' ', '><mark>' . $froms[$ii] . '</mark> ', str_replace(' ' . $froms[$ii] . ' ', ' <mark>' . $froms[$ii] . '</mark> ', $fixthis)));
    }
    $outth=str_replace($prefixthis, $fixthis, $outth);
    
    $tos=explode("<script", $outth);
    for ($ii=1; $ii<sizeof($tos); $ii++) {
      if (strpos(explode("</script>", $tos[$ii])[0], "</mark>") !== false) {
         $outth=str_replace(explode("</script>", $tos[$ii])[0], str_replace("</mark>", "", str_replace("<mark>", "", explode("</script>", $tos[$ii])[0])), $outth);
      }
    }
     
    $tos=explode('="', $outth);
    for ($ii=1; $ii<sizeof($tos); $ii++) {
      if (strpos(explode('"', $tos[$ii])[0], "</mark>") !== false) {
         $outth=str_replace(explode('"', $tos[$ii])[0], str_replace("</mark>", "", str_replace("<mark>", "", explode('"', $tos[$ii])[0])), $outth);
      }
    }
   
    //if (strpos($_GET['url'], 'Melbourne') !== false) { file_put_contents('xxx.xxx', $outth);   }
    if (isset($_GET['place'])) {
      if (urldecode($_GET['place']) != '_blank') {
        return str_replace('</b' . 'ody>', '<scr' . 'ipt> parent.document.body.style.cursor="pointer"; </sc' . 'ript></body>', $outth); 
      }
    }
    return $outth;
}

 if (isset($_GET['url'])) {
   if (isset($_GET['letlen'])) {
     $letlen=urldecode($_GET['letlen']);
   }
   $langis=urldecode($_GET['lang']);
   $urlis=urldecode($_GET['protocol']) . urldecode($_GET['lang']) . urldecode($_GET['afterlang']) . str_replace('+','_',urldecode($_GET['url']));
   $contis=file_get_contents($urlis);
   if (trim($contis) == "" && $langis != "en") {
    $urlis=urldecode($_GET['protocol']) . 'en' . urldecode($_GET['afterlang']) . str_replace('+','_',urldecode($_GET['url']));
    $contis="";
    $contis=file_get_contents($urlis);
   }
   echo relative_to_absolute($contis);
   exit;
 
 } else {
 
    echo "<html>
    <head>
    <meta charset='UTF-8'/>
    <script type='text/javascript'>
    var place='_blank';
    
    function ChangeLcodeNow(selo) {
      var selov=selo.value;
      if ('' == '" . $preminmax . "') {
      document.getElementById('lang').value=selov.substring(0,2);
      if (selo.outerHTML.indexOf(' value=\"' + selov.value + '\">') != -1) {
      document.getElementById('lang').title='Language ... ' + selo.outerHTML.split(' value=\"' + selov + '\">')[1].split('<')[0];
      } else {
      document.getElementById('lang').title='Language';
      }
      } else {
      document.getElementById('lang').style.width='' + Math.floor(eval(selov.length * 12.5)) + 'px';
      document.getElementById('lang').value=selov;
      if (selo.outerHTML.indexOf(' value=\"' + selov + '\">') != -1) {
      document.getElementById('lang').title='Language ... ' + selo.outerHTML.split(' value=\"' + selov + '\">')[1].split('<')[0];
      } else {
      document.getElementById('lang').title='Language';
      }
      }
    }
    
    function toggle(ia) {
      if (place == '_blank') {
        place='below';
        document.getElementById('place').value=place;
        document.getElementById('myform').target=place;
        ia.title='Click for New Tab';
        ia.innerHTML='+';
        document.getElementById('myhr').style.display='block';
      } else {
        place='_blank';
        document.getElementById('place').value=place;
        document.getElementById('myform').target=place;
        ia.title='Click for Below';
        ia.innerHTML='-';
      }
    }
    </script>
    </head>
    <body id=xbody style=background-color:#f0f0f0; onload=\" if (document.URL.indexOf('https:') == 0) { location.href='http:' + document.URL.substring(6); }  \">
    <form onsubmit=\" if (place != '_blank') { document.getElementById('below').style.display='block'; document.body.style.cursor='progress';  }  return true; \" id=myform target=_blank action=http://" . $_SERVER['SERVER_NAME'] . str_replace(":80","",str_replace(":443","",":" . $_SERVER['SERVER_PORT'])) . explode('#',explode('?',$_SERVER['REQUEST_URI'])[0])[0] . " method=GET>
    <h1>Wikipedia Mark <input type=number style=display:inline-block;width:50px; name=letlen value='8' min=6></input> and Above Length Words</h1>
    <h3>RJM Programming <a onclick=toggle(this); style=cursor:pointer; title='Click for Below'>-</a> January, 2023</h3>
    <input type=text style=display:inline-block;width:50px; name=protocol value='http://' readonly></input><select style=display:inline-block;width:1px;background-color:lightpink; id=language title='Optionally select language' onchange='ChangeLcodeNow(this);'>" . $sih . "</select><input title=Language type=text style=display:inline-block;width:25px;background-color:lightpink; id=lang name=lang value='en' " . $preminmax . "minlength=2 " . $preminmax . "maxlength=2></input><input type=text style='display:inline-block;width:130px;' id=afterlang name=afterlang value='.wikipedia.org/wiki/' readonly></input><input type=text style='display:inline-block;background-color:lightpink;' id=url name=url placeholder='Your_Topic_Goes_Here' value=''></input>
    <input name=place id=place value='_blank' type=hidden></input><input type=submit value='Mark' style=background-color:yellow;></input>
    </form>
    <hr id=myhr style=display:none;></hr>
    <iframe frameborder=0 name=below id=below style=display:none;width:100%;height:900px;></iframe>
    </body>
    </html>";
 }

?>