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

首先,这样的字符串是完全没用的——两个不同字符集的混合?

iso8859-8 中的希伯来字符和 UTF-8 中多字节序列的每个字节都有一个值ord($char) > 127。所以我要做的是找到值大于 127 的所有字节,然后检查它们是否像 is8859-8 一样有意义,或者如果您认为它们作为 UTF8 序列更有意义......

于 2009-11-07T20:59:14.580 回答
0
function is_hebrew($string)
{
    return preg_match("/\p{Hebrew}/u", $string);
}
于 2012-05-21T20:54:18.810 回答