Let's take a look at one of the Code conversion program codes written in PHP Oh, turn the gbk,utf-8 between each other.
function Phpunescape_no ($source) {
$DECODEDSTR = "";
$pos = 0;
$len = strlen ($source);
while ($pos < $len) {
$charAt = substr ($source, $pos, 1);
if ($charAt = = '% ') {
$pos + +;
$charAt = substr ($source, $pos, 1);
if ($charAt = = ' U ') {
We got a Unicode character
$pos + +;
$unicodeHexVal = substr ($source, $pos, 4);
$unicode = Hexdec ($unicodeHexVal);
$entity = "the". $unicode. ';';
$decodedStr. = Utf8_encode ($entity);
$pos + = 4;
}
else {
We have an escaped ASCII character
$hexVal = substr ($source, $pos, 2);
$decodedStr. = Chr (Hexdec ($hexVal));
$pos + = 2;
}
} else {
$decodedStr. = $charAt;
$pos + +;
}
}
return $decodedStr;
}
//////////////////////////////////////////////////////////////////////
function Phpunescape ($ESCSTR) {
Preg_match_all ("/%u[0-9a-za-z]{4}|%.{ 2}|*| [0-9a-za-z.+-_]+/], $ESCSTR, $matches); PRT ($matches);
$ar = & $matches [0];
$c = "";
foreach ($ar as $val) {
if (substr ($val, 0, 1)! = "%") {//If it is an alphanumeric +-_. ASCII code
$c. = $val;
}
ElseIf (substr ($val,)! = "U") {//If the ASCII code is non-alphanumeric +-_.
$x = Hexdec (substr ($val,));
$c. =CHR ($x);
}
else {//If the code is greater than 0xFF
$val = Intval (substr ($val, 2), 16);
if ($val < 0x7F) {//0000-007f
$c. = Chr ($val);
}elseif ($val < 0x800) {//0080-0800
$c. = Chr (0xC0 | ($val/64));
$c. = Chr (0x80 | ($val% 64));
}else{//0800-FFFF
$c. = Chr (0xE0 | (($val/64)/64));
$c. = Chr (0x80 | (($val/64)% 64));
$c. = Chr (0x80 | ($val% 64));
}
}
}
Return UTFTOGBK ($c);
}
function UTFTOGBK ($CS) {
$CODEOBJ = new Chinese ("UTF8", "GBK");
Return $CODEOBJ->convert ($CS);
}
function Phpescape ($STR) {
$RETURNSTR = "";
if (@function_exists (' mb_convert_encoding ')) {
$RETURNSTR = Phpescape_yes ($STR);
}
else{
$RETURNSTR = Phpescape_no ($STR);
}
return $returnStr;
}
function Phpescape_yes ($string, $encoding = ' GBK ') {
$return = ";
for ($x = 0; $x < Mb_strlen ($string, $encoding); $x + +) {
$str = Mb_substr ($string, $x, 1, $encoding);
if (strlen ($STR) > 1) {
$return. = '%u '. Strtoupper (Bin2Hex (mb_convert_encoding ($str, ' UCS-2 ', $encoding)));
} else {
$return. = '% '. Strtoupper (Bin2Hex ($STR));
}
}
return $return;
}
function Phpescape_no ($STR) {
Preg_match_all ("/[x80-xff].| [x01-x7f]+/], $STR, $NEWSTR);
$ar = $newstr [0];
foreach ($ar as $k = = $v) {
if (Ord ($ar [$k]) >=127) {
$tmpString =bin2hex (GBKtoUCS2 ($v));
if (!eregi ("WIN", Php_os)) {
$tmpString = substr ($tmpString, 2,2). substr ($tmpString, 0,2);
}
$reString. = "%u". $tmpString;
} else {
$reString. = Rawurlencode ($v);
}
}
return $reString;
}
function GBKtoUCS2 ($CS) {
$CODEOBJ = new Chinese ("GBK", "UTF8");
Return Utf8tounicode ($CODEOBJ->convert ($CS));
}
function Utf8tounicode ($str, $order = "big")
{
$ucs 2string = "";
$n =strlen ($STR);
for ($i =0; $i < $n; $i + +) {
$v = $str [$i];
$ord = Ord ($v);
if ($ord <=0x7f) {//0xxxxxxx
if ($order = = "little") {
$ucs 2string. = $v. chr (0);
}
else {
$ucs 2string. = Chr (0). $v;
}
}
ElseIf ($ord <0xe0 && ord ($str [$i +1]) >=0x80) {//110xxxxx 10xxxxxx
$a = (ord ($str [$i]) & 0x3F) <<6;
$b = Ord ($str [$i +1]) & 0x3F;
$ucsCode = Dechex ($a + $b); Echot ($ucsCode);
$h = Intval (substr ($ucsCode, 0,2), 16);
$l = Intval (substr ($ucsCode, 2,2), 16);
if ($order = = "little") {
$ucs 2string. = Chr ($l). chr ($h);
}
else {
$ucs 2string. = Chr ($h). chr ($l);
}
$i + +;
}elseif ($ord <0xf0 && ord ($str [$i +1]) >=0x80 && ord ($str [$i +2]) >=0x80) {//1110xxxx 10xxxxxx 10xxxxxx
$a = (ord ($str [$i]) & 0x1F) <<12;
$b = (ord ($str [$i +1]) & 0x3F) <<6;
$c = Ord ($str [$i +2]) & 0x3F;
$ucsCode = Dechex ($a + $b + $c); Echot ($ucsCode);
$h = Intval (substr ($ucsCode, 0,2), 16);
$l = Intval (substr ($ucsCode, 2,2), 16);
if ($order = = "little") {
$ucs 2string. = Chr ($l). chr ($h);
}
else {
$ucs 2string. = Chr ($h). chr ($l);
}
$i +=2;
}
}
return $ucs 2string;
}
////////////////////////////////////////////////////////
function Unescapefuncmake ($TXT) {
if ($Txt [2]!= "*") return $TXT;
$ETXT = "";
$MTXT = "egy+nb@qwxvcwjkprxvzdl/h7eomtsa9f6*fpnr81i_0kqdg2lbcuziajyo34m-st%5.uh3syz0hzt/y@qdtnecf1bpujio.x6ks+ Oir8gpvg9wbm%xjvklwrn*f4hae-qladm27uc5_ ";
$TTxtnum = substr ($Txt, 0,2);
$TTXT = substr (($MTxt, substr). substr ($MTxt,)), $TTxtnum);
for ($ii =3; $ii
$w = ($ii-3)%10;
$k = Strpos ($TTxt, $Txt [$ii], $w)-$w;
$ETxt. = $MTxt [$k];
}
Return Phpunescape ($ETXT);
}
function Escapefuncmake ($TXT) {
if ($Txt = = "" | | $Txt [2]== "*") return $TXT;
$MTXT = "egy+nb@qwxvcwjkprxvzdl/h7eomtsa9f6*fpnr81i_0kqdg2lbcuziajyo34m-st%5.uh3syz0hzt/y@qdtnecf1bpujio.x6ks+ Oir8gpvg9wbm%xjvklwrn*f4hae-qladm27uc5_ ";
$BTXT = Phpescape ($TXT);
$TTXT = Floor (Mt_rand (0,50));
$ETxt = $TTxt. ($TTxt >9? " *":"**");
for ($ii =0; $ii
$k = Strpos ($MTxt, $BTxt [$ii]) + ($ii%10);
$ETxtstr = substr (($MTxt, substr). substr ($MTxt,)), $TTXT);
$ETxt. = $ETxtstr [$k];
}
return $ETXT;
}
http://www.bkjia.com/PHPjc/445049.html www.bkjia.com true http://www.bkjia.com/PHPjc/445049.html techarticle Let's take a look at one of the Code conversion program codes written in PHP Oh, turn the gbk,utf-8 between each other. function Phpunescape_no ($source) {$decodedStr =; $pos = 0; $len = strlen ($source); W ...