PHP中是否有任何内置函数可以将特殊字符转换为它的ascii代码?
4913 次
4 回答
3
前面的回答是正确的,只要你使用的是纯ASCII(这意味着只有基本的英文字母小写+大写,阿拉伯数字和基本的英文标点符号)。一旦你使用的不止这些,字符编码就会发挥作用。
首先,您始终需要记住您使用的是什么编码 - 有些字符甚至不存在于某些编码中(纯 ASCII 仅包含 127 个字符),有些存在于一种编码中但不存在于另一种编码中,等等。所以你需要知道您使用的是什么编码。
其次,一些编码使用多字节字符(例如 utf-8)——也就是说,一个字符被存储为一个或多个字节。那些也没有 ASCII 码 - 请参阅Joel Spolsky 的关于 Unicode 的文章了解更多详细信息。
于 2010-06-01T09:05:30.157 回答
0
试试这个功能:
function ordUTF8($c, $index = 0, &$bytes = null)
{
$len = strlen($c);
$bytes = 0;
if ($index >= $len)
{
return false;
}
$h = ord($c{$index});
if ($h <= 0x7F)
{
return $h;
}
else if ($h < 0xC2)
{
return false;
}
else if ($h <= 0xDF && $index < $len - 1)
{
return ($h & 0x1F) << 6 | (ord($c{$index + 1}) & 0x3F);
}
else if ($h <= 0xEF && $index < $len - 2)
{
return ($h & 0x0F) << 12 | (ord($c{$index + 1}) & 0x3F) << 6
| (ord($c{$index + 2}) & 0x3F);
}
else if ($h <= 0xF4 && $index < $len - 3)
{
return ($h & 0x0F) << 18 | (ord($c{$index + 1}) & 0x3F) << 12
| (ord($c{$index + 2}) & 0x3F) << 6
| (ord($c{$index + 3}) & 0x3F);
}
else
{
return false;
}
}
第一个参数是字符串,第二个参数是起始索引(如果您只指定一个特殊字符,那么这将是零)。
于 2010-06-01T09:29:05.830 回答