5

PHP プログラミング言語で、文字列に utf8 と iso8859-8 の両方のヘブライ文字が含まれているかどうかを (正規表現を使用して) 検出できるようにしたいと考えています。ありがとう!

4

5 に答える 5

15

iso8859-8 文字セットのマップは次のとおりです。E0 ~ FA の範囲は、ヘブライ語用に予約されているようです。文字クラスでこれらの文字を確認できます。

[\xE0-\xFA]

UTF-8 の場合、ヘブライ語用に予約されている範囲は 0591 から 05F4 のようです。したがって、次の方法でそれを検出できます。

[\u0591-\u05F4]

PHP での正規表現一致の例を次に示します。

echo preg_match("/[\u0591-\u05F4]/", $string);
于 2009-11-07T21:04:25.707 に答える
7

PHP ファイルが UTF-8 でエンコードされている場合、ヘブライ語が含まれている場合は、次の RegX を使用する必要があります。

$string="אבהג";
echo preg_match("/\p{Hebrew}/u", $string);
// output: 1
于 2012-05-17T14:50:36.700 に答える
1

文字列の最初の文字がヘブライ語であるかどうかを確認する小さな関数を次に示します。

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.
        );
}

幸運を :)

于 2010-04-12T20:42:29.097 に答える
0
function is_hebrew($string)
{
    return preg_match("/\p{Hebrew}/u", $string);
}
于 2012-05-21T20:54:18.810 に答える
0

まず、そのような文字列はまったく役に立たないでしょう - 2 つの異なる文字セットが混在していますか?

iso8859-8 のヘブライ文字と、UTF-8 のマルチバイト シーケンスの各バイトには、値 がありますord($char) > 127。したがって、127 より大きい値を持つすべてのバイトを見つけて、それらが is8859-8 として意味があるかどうか、または UTF8 シーケンスとしてより意味があると思われるかどうかを確認します...

于 2009-11-07T20:59:14.580 に答える