请教高手,如果将以下的代码转成php
private string getencoding(string str)
{
string[] Temp = str.Split('/');
string Tempstr = "";
for (int i = 0; i < Temp.Length - 1; i++)
{
Tempstr = Tempstr + Temp[i] + "/";
}
return getencoding1(Uri.UnescapeDataString(Tempstr)).Replace("%2F", "/") + getencoding1(Uri.UnescapeDataString(Temp[Temp.Length - 1]));
}
private static string get16(int value)
{
string ret = "";
if (value < 10 && value >= 0)
{
return value.ToString();
}
else
{
switch (value)
{
case 10: ret = "A"; break;
case 11: ret = "B"; break;
case 12: ret = "C"; break;
case 13: ret = "D"; break;
case 14: ret = "E"; break;
case 15: ret = "F"; break; }
return ret; }
}
//处理数字转化为16进制表示
private static string get10to16(int value)
{
string ret = "";
if (value >= 16)
{
while (value >= 16)
{
ret = get16(value % 16) + ret;
value = (value / 16);
if (value < 16)
{ ret = get16(value) + ret; }
}
}
else
{
ret = get16(value) + ret; }
return "%" + ret;
}
//将字符或中文用字节拆分,并转化16进制表示
private static string getencoding1(string str)
{
byte[] b = Encoding.GetEncoding("gb2312").GetBytes(str);
string ret = "";
foreach (byte by in b)
{
try
{
ret += get10to16(Convert.ToInt32(by.ToString())); }
catch
{ }
}
return ret;
}
private string getencoding(string str)
{
string[] Temp = str.Split('/');
string Tempstr = "";
for (int i = 0; i < Temp.Length - 1; i++)
{
Tempstr = Tempstr + Temp[i] + "/";
}
return getencoding1(Uri.UnescapeDataString(Tempstr)).Replace("%2F", "/") + getencoding1(Uri.UnescapeDataString(Temp[Temp.Length - 1]));
}
private static string get16(int value)
{
string ret = "";
if (value < 10 && value >= 0)
{
return value.ToString();
}
else
{
switch (value)
{
case 10: ret = "A"; break;
case 11: ret = "B"; break;
case 12: ret = "C"; break;
case 13: ret = "D"; break;
case 14: ret = "E"; break;
case 15: ret = "F"; break; }
return ret; }
}
//处理数字转化为16进制表示
private static string get10to16(int value)
{
string ret = "";
if (value >= 16)
{
while (value >= 16)
{
ret = get16(value % 16) + ret;
value = (value / 16);
if (value < 16)
{ ret = get16(value) + ret; }
}
}
else
{
ret = get16(value) + ret; }
return "%" + ret;
}
//将字符或中文用字节拆分,并转化16进制表示
private static string getencoding1(string str)
{
byte[] b = Encoding.GetEncoding("gb2312").GetBytes(str);
string ret = "";
foreach (byte by in b)
{
try
{
ret += get10to16(Convert.ToInt32(by.ToString())); }
catch
{ }
}
return ret;
}
<?php
function getencoding($str)
{
$temp = explode('/',$str);
$tempstr = "";
for ($i=0; $i<count($temp)-1; $i++)
{
$tempstr .= $temp[$i].'/';
}
return getencoding1( str_replace("%2F","/",urldecode($tempstr) ) ) . getencoding1( urldecode($temp[count($temp)-1]) );
}
function getencoding1($str)
{
$ret = "";
for ($i=0;$i<strlen($str);$i++)
{
$ret.=get10to16( ord($str[$i]) );
}
return $ret;
}
function get10to16($value)
{
$ret = "";
if ($value>=16)
{
while ($value>=16)
{
$ret = get16($value%16).$ret;
$value/=16;
if ($value<16)
$ret = get16($value).$ret;
}
}
else
{
$ret = get16($value).$ret;
}
return "%".$ret;
}
function get16($value)
{
$ret = "";
if ($value<10 && $value>=0)
return "$value";
else
{
$str = 'ABCDEF';
return $str[$value-10];
}
}