nasıl ben php kullanarak bir dize ibranice karakterler hem iso8859-8 ve utf8 algılayabilir

4 Cevap php

Bir dize php programlama dili utf8 ve iso8859-8 hem ibranice karakterler içeriyorsa I () düzenli ifadeler kullanarak tespit edebilmek istiyorum. teşekkürler!

4 Cevap

İşte map of the iso8859-8 character set. Aralık E0 - FA İbranice için ayrılmış gibi görünüyor. Sen bir karakter sınıfının bu karakterleri için kontrol edebilir:

[\xE0-\xFA]

UTF-8 için, range reserved for Hebrew 05F4 için 0591 gibi görünmektedir. Yani sahip olduğunu tespit olabilir:

[\u0591-\u05F4]

Burada PHP regex maç bir örnek:

echo preg_match("/[\u0591-\u05F4]/", $string);

Burada bir dizesinde ilk karakter ibranice olup olmadığını kontrol etmek için küçük bir fonksiyon:

function IsStringStartsWithHebrew($string)
{
    return (strlen($string) > 1 && //minimum of chars for hebrew encoding
        ord($string[0]) == 215 && //first byte is 110-10111
        ord($string[1]) >= 144 && ord($string[1]) <= 170 //hebrew range in the second byte.
        );
}

iyi şanslar :)

bunu İbranice olduğu durumlarda olması gerektiği gibi PHP dosyası UTF-8 ile kodlanmış ise iyi, aşağıdaki RegX kullanmanız gerekir:

$string="אבהג";
echo preg_match("/\p{Hebrew}/u", $string);
// output: 1

Birincisi, böyle bir dize tamamen yararsız olacağını - İki farklı karakter setleri bir karışımı?

Iso8859-8'de İbranice karakterleri ve UTF-8 multibyte dizilerin her byte ikisi de, ord($char) > 127 bir değere sahip. Yani ne yapacağını 127 daha büyük bir değere sahip tüm bayt buluyorum, ve sonra is8859-8 olarak mantıklı olmadığını kontrol edin, ya da düşünüyorsanız onlar UTF8-dizisi olarak daha mantıklı olur ...