<?php
class percentEncoder {
static $alphabet=array();
public static function encode($str) {
self::$alphabet = array(
"А"=>192,"Б"=>193,"В"=>194,"Г"=>195,"Д"=>196,"Е"=>197,"Ж"=>198,"З"=>199,"И"=>200,"Й"=>201,"К"=>202,"Л"=>203,"М"=>204,"Н"=>205,"О"=>206,"П"=>207,"."=>ord("."),"!"=>ord("!"),"?"=>ord("?"),";"=>ord(":"),";"=>ord(";"),"?"=>ord("?"),
"Р"=>208,"С"=>209,"Т"=>210,"У"=>211,"Ф"=>212,"Х"=>213,"Ц"=>214,"Ч"=>215,"Ш"=>216,"Щ"=>217,"Ъ"=>218,"Ы"=>219,"Ь"=>220,"Э"=>221,"Ю"=>222,"Я"=>223," "=>32,chr(10)=>10,
"а"=>224,"б"=>225,"в"=>226,"г"=>227,"д"=>228,"е"=>229,"ж"=>230,"з"=>231,"и"=>232,"й"=>233,"к"=>234,"л"=>235,"м"=>236,"н"=>237,"о"=>238,"п"=>239,","=>ord(","),
"р"=>240,"с"=>241,"т"=>242,"у"=>243,"ф"=>244,"х"=>245,"ц"=>246,"ч"=>247,"ш"=>248,"щ"=>249,"ъ"=>250,"ы"=>251,"ь"=>252,"э"=>253,"ю"=>254,"я"=>255,"0"=>ord("0"),"1"=>ord("1"),"2"=>ord("2"),"3"=>ord("3"),"4"=>ord("4"),"5"=>ord("5"),"6"=>ord("6"),"7"=>ord("7"),"8"=>ord("8"),"9"=>ord("9")
);
for($i=0;$i<=208;$i++) {
self::$alphabet[chr($i)]=$i;
}
$data='';
for($i=0;$i<mb_strlen($str,"UTF-8");$i++) {
$char=mb_substr($str,$i,1,"UTF-8");
$data.="%".self::toHex(self::getOrd($char));
}
return $data;
}
private function getOrd($letter) {
return self::$alphabet[$letter];
}
private function toHex($dec=225) {
$hex = array(0,1,2,3,4,5,6,7,8,9,"A","B","C","D","E","F");
$second = $dec%16;
$first=($dec-$second)/16;
return ($hex[$first].$hex[$second]);
}
}