Var mı bir o en ASCII kodu özel karakterleri dönüştürmek için php işlevi inşa?
Bir karakterin ASCII değerini döndürür ord function hangi vardır.
ASCII sayı alır ve karakter döndürür chr bunun tersi de vardır.
Başka ayarlanmış bir karakter karakterleri dönüştürmek için çalışıyorsanız, o zaman kullanabilirsiniz iconv library
Önceki yanıtların doğru, as long as you are using plain ASCII em> (+ büyük harf, Arapça sayılar ve temel İngilizce noktalama sadece temel İngilizce alfabe alt anlamına gelir). Bundan daha kullanıyor kez, karakter kodlamaları devreye girer.
Her şeyden önce, her zaman kullandığınız hangi kodlama akılda tutmak gerekir - bazı karakterler bile (ASCII sadece 127 karakter içeren) bazı kodlamalar yoktur, bazı başka bir kodlama var ama değil, vs Yani Eğer kullandığınız hangi kodlama bilmek gerekir.
İkincisi, bazı kodlamaları (örn. utf-8) multi-byte karakterleri kullanabilirsiniz - yani, bir karakter one or more bayt olarak depolanır. Bu da, bir ASCII kodu yok - bakınız, örneğin, Joel Spolsky's article on Unicode daha fazla bilgi için.
Bu fonksiyonu deneyin:
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;
}
}
İlk parametre dize, ikinci başlangıç endeksi (sadece bir özel karakter belirtirseniz, daha sonra bu sıfır olacaktır).