PHP中是否有内置函数将特殊字符转换为ascii代码?
答案 0 :(得分:7)
答案 1 :(得分:6)
有ord function返回字符的ASCII值。
还有它的反转chr,它接受一个ASCII数字并返回该字符。
如果您尝试将字符从一个字符集转换为另一个字符集,则可以使用iconv library
答案 2 :(得分:3)
之前的回答是正确的,只要你使用普通的ASCII (这意味着只有基本的英文字母低级+大写,阿拉伯数字和基本的英文标点符号)。一旦你使用了更多,字符编码就会发挥作用。
首先,你总是需要记住你正在使用的编码 - 有些字符甚至不存在于某些编码中(普通ASCII只包含127个字符),一些存在于一个编码中但不存在于另一个编码中,等等所以你需要知道你正在使用什么编码。
其次,某些编码使用多字节字符(例如utf-8) - 也就是说,一个字符存储为一个或多个字节。那些也没有ASCII码 - 参见例如Joel Spolsky's article on Unicode了解更多详情。
答案 3 :(得分: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;
}
}
第一个参数是字符串,第二个参数是起始索引(如果只指定一个特殊字符,那么这将是零)。