PHP unicode edin

7 Cevap php

Nasıl bir karakter PHP ile bir Unicode karakter olup olmadığını kontrol edebilirsiniz?

7 Cevap

Aslında, hatta mb_string uzantısı gerekmez:

if (strlen($string) != strlen(utf8_decode($string)))
{
    echo 'is unicode';
}

Ve belirli bir karakterin kod noktası bulmak için:

$ord = unpack('N', mb_convert_encoding($string, 'UCS-4BE', 'UTF-8'));

echo $ord[1];

Eğer ile deneyebilirsiniz

mb_check_encoding($s,"UTF-8")

link

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';
    }

?>