Nasıl bir karakter PHP ile bir Unicode karakter olup olmadığını kontrol edebilirsiniz?
Genellikle gibi bir şey yapmak istiyorum:
if (mb_strlen($ch) != strlen($ch)) ...
Ben eklemek gerekir: strlen sayımları bayt, strlen karakterleri sayar iken (düzgün ben gerçekten yerine Unicode bahsettiğini sanırım multi-byte karakterleri, taşıma - unicode da ASCII ayırt edilemeyen yüz yılı aşkın bir tek-bayt karakterler kapakları gibi)
Bir unicode karakter DAİMA en önemli bayt olursa olsun karakterin değer veya ne set olacak bir çoklu-bayt unicode karakter ya da ne bir parçası ise. Sadece bazı unicode karakter sadece bir bayt olduğundan dize karakterden daha fazla bayt olup olmadığını görmek için kontrol edemez. Bir dize'nın bayt değerinde herhangi bir karakter 127'den daha büyükse, bu dize unicode içerir.
Teşekkürler çocuklar .. Sonunda i arıyordum cevap var.
http://hsivonen.iki.fi/php-utf8/ adlı bir içerme dosyası var.
Aşağıdaki kod benim sorun çözüldü:
<?php
require_once("utf8.inc");
/*** create a unicode string ***/
$s = "حملة إلا صلاتي";
$out = utf8ToUnicode($s);
for ($i=0;$i < strlen($s);$i++)
echo dechex($out[$i]).".";
?>
Değil karakter akışları - PHP Strings bytestreams vardır. Aslında PHP unicode dizeleri olamaz; Bazı kodlama ile karakterleri kodlamak gerekir. Eğer tüm unicode aralığını kapsayacak istiyorsanız, UTF-8 en bariz bir seçimdir.
Eğer bir utf-8 kodlanmış Bytestream ve kodlaması altında almak istiyorsanız, bu kütüphane kullanabilirsiniz: http://hsivonen.iki.fi/php-utf8/
Ancak, ben sizin için bu ihtiyacı tam olarak ne acaba? Büyük olasılıkla, sadece UTF-8 ile tüm sıkıntılardan çözebilir.
(PHP 6> = 6.0.0) is_unicode()
<?php
/*** create a unicode string ***/
$unicode = "ûПÌčöđę";
/*** check if value is unicode ***/
if(is_unicode($unicode))
{
echo 'Unicode string';
}
?>