wellsun7 于 2016.03.21 04:37 提问

<?php
function encode(\$c)

{

\$len = strlen(\$c);

\$scill='';
\$jieguo='';
\$a = 0;

while (\$a < \$len)

{

\$ud = 0;

if (ord(\$c{\$a}) >=0 && ord(\$c{\$a})<=127)

{

\$ud = ord(\$c{\$a});

\$a += 1;

}

else if (ord(\$c{\$a}) >=192 && ord(\$c{\$a})<=223)

{

\$ud = (ord(\$c{\$a})-192)*64 + (ord(\$c{\$a+1})-128);

\$a += 2;

}

else if (ord(\$c{\$a}) >=224 && ord(\$c{\$a})<=239)

{

\$ud = (ord(\$c{\$a})-224)*4096 + (ord(\$c{\$a+1})-128)*64 + (ord(\$c{\$a+2})-128);

\$a += 3;

}

else if (ord(\$c{\$a}) >=240 && ord(\$c{\$a})<=247)

{

\$ud = (ord(\$c{\$a})-240)*262144 + (ord(\$c{\$a+1})-128)*4096 + (ord(\$c{\$a+2})-128)*64 + (ord(\$c{\$a+3})-128);

\$a += 4;

}

else if (ord(\$c{\$a}) >=248 && ord(\$c{\$a})<=251)

{

\$ud = (ord(\$c{\$a})-248)*16777216 + (ord(\$c{\$a+1})-128)*262144 + (ord(\$c{\$a+2})-128)*4096 + (ord(\$c{\$a+3})-128)*64 + (ord(\$c{\$a+4})-128);

\$a += 5;

}

else if (ord(\$c{\$a}) >=252 && ord(\$c{\$a})<=253)

{

\$ud = (ord(\$c{\$a})-252)*1073741824 + (ord(\$c{\$a+1})-128)*16777216 + (ord(\$c{\$a+2})-128)*262144 + (ord(\$c{\$a+3})-128)*4096 + (ord(\$c{\$a+4})-128)*64 + (ord(\$c{\$a+5})-128);

\$a += 6;

}

else if (ord(\$c{\$a}) >=254 && ord(\$c{\$a})<=255)

{ //error

\$ud = false;

}

\$scill = dechex(\$ud); // 再把结果十进制转换为十六进制

``````    \$jieguo .= "&#x".\$scill.";";
}
return \$jieguo;
``````

}

echo encode('你好');
?>

http://www.mcqyy.com/RunCode/php/

1个回答

clinuxyj   2016.03.23 19:10