我如何使用PHP检测字符串中的iso8859-8和utf8的希伯来字符

时间:2009-11-07 20:43:15

标签: php regex hebrew

我希望能够检测(使用正则表达式)字符串是否包含php编程语言中的utf8和iso8859-8的希伯来字符。谢谢!

5 个答案:

答案 0 :(得分:14)

这是map of the iso8859-8 character set。范围E0-FA似乎是为希伯来语保留的。您可以检查字符类中的那些字符:

[\xE0-\xFA]

对于UTF-8,range reserved for Hebrew似乎是0591到05F4。所以你可以通过以下方式检测到:

[\u0591-\u05F4]

以下是PHP中正则表达式匹配的示例:

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

答案 1 :(得分:4)

如果你的PHP文件是用UTF-8编码的,那么你应该使用以下的RegX:

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

答案 2 :(得分: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.
        );
}
祝你好运:)

答案 3 :(得分:0)

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

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

答案 4 :(得分:0)

function is_hebrew($string)
{
    return preg_match("/\p{Hebrew}/u", $string);
}